Apache-2.2

Apache2 ‘記憶體’/‘保留在記憶體中’ 一個靜態 html 頁面(有什麼要獲得的嗎?)

  • October 1, 2011

我在 Amazon EC2 微型實例上執行一個具有流行的 99% 靜態 html 頁面 (1 MB) 的站點,該站點每天接收大約 35,000 次頁面瀏覽量。該站點僅每 3-4 小時左右更改一次,並且它已經在執行 mod_deflate,使頁面大小達到 100KB 左右。

我想知道是否有任何方法可以告訴 apache2 該頁面應該始終在記憶體中?

或者它是否已經被 apache2 或磁碟以某種方式記憶體(執行 ubuntu、ext3)?

(半)技術要點

linux(和其他類 Unix 系統,以及可能用於伺服器的任何其他下降作業系統)會將最近/經常使用的文件數據保存在 RAM 中。在 linux 中,這被稱為“ pagecache ”。

對於目錄,linux 還會在“ dentry ”(目錄條目)中保存最近查找的文件名和最近列出的目錄。這種方式一次又一次地查找相同的名稱不會導致磁碟訪問,甚至不需要通過特定的文件系統層程式碼(例如,ext3)。

因此,如果經常使用文件,Linux 會將文件數據和元數據都保存在 RAM 中。這發生在核心中,因此:

  • Apache 和其他 linux 程序不必做任何事情;
  • 不同的程序共享 linux 文件系統記憶體特性;如果某些程序需要讀取另一個程序最近讀取(或寫入)的文件,它將受益於記憶體。

如果每個程序都必須實現自己的磁碟記憶體,那麼即使它們需要相同的文件,它們也會佔用記憶體。(如果某個程序被換出,它的 RAM 文件記憶體也會變得混亂!)

但是一個文件經常被完全讀取,因此被完全記憶體在 RAM 中的事實並不意味著對該文件的重複只讀訪問不會導致任何磁碟訪問:因為 linux 和其他 Unx 一樣有文件最後的概念訪問時間*(atime),它必須定期更新磁碟上的文件元數據 - 除非您在 fs 級別關閉訪問時間更新(選項noatime)。在這樣做之前,您必須確保沒有任何東西取決於正確的訪問時間。這主要是個人電腦的問題,atime更新可以防止磁碟休眠,這在伺服器上可能並不重要。我提到這主要是為了完整性。

真正的問題

你有沒有分析過你的系統?您是否發現了具體的性能問題?

引用自:https://serverfault.com/questions/317490