2011-11-22 35 views
1

問題是我想保證我的文件尾隨將會是幾乎從來沒有做磁盤I/O。由於Java服務器正在將文件(日誌文件,本質上)寫入磁盤,因此我希望它們可以被實時讀取並傳輸到其他設備。如何保證我的文件尾隨Linux緩存中的最新緩衝區

假設目標設備可以吸收與生成日誌文件的源服務器一樣多的數據,並且沒有網絡飽和或類似問題,那麼,如果我總是從文件末尾讀取,則是它保證我讀取的數據總是來自Linux的緩衝區緩存?

文件每小時滾動一次。

回答

1

您需要確保在從文件緩存中丟棄文件之前正在讀取該文件。如果你在文件結尾的幾MB內,我不會想象你會遇到問題。

在Linux上,在我看來,您可以安全地將磁盤緩存大約佔總內存的10%。 (但我沒有證據)

+0

我在想如果一個大文件寫入會導致整個緩存刷新,或者每個文件都有限制嗎? – inder

+1

它只會刷新儘可能多的數據。它通常是最近最近使用的數據。一旦寫入緩存填滿,它將等待一些數據寫入磁盤,以防止大量寫入將內存中的所有內容全部推出。 –

+0

我不認爲你可以保證你沒有緩存中的數據。我想如果你想要真正的時間,你必須使用字符設備。 – awm

相關問題