Linux

刪除linux記憶體的ram

  • July 8, 2011

我有一個具有 8GB 記憶體的網路伺服器,並且正在執行一個非常密集的 php 站點(1 個站點),它可以進行文件操作、圖形、電子郵件、論壇等。環境遠不是靜態的,這讓我相信在 ram 中記憶體任何東西幾乎沒有什麼好處,因為幾乎每個對伺服器的請求都會創建新的或更新的頁面。而且很多記憶體是在客戶端完成的,所以當涉及到圖像、javascript、css時,我們有大量的 304 請求。

此外,我確實有語言文件被寫入伺服器上的平面文件,其中記憶體的 ram 肯定是好的,而不是從磁碟讀取。但是這樣的文件屈指可數。

在大約兩週內,我從擁有 98% 的免費 ram 變為 4% 的免費 ram。這發生在我們還將幾個大型 svn 更新推送到伺服器上的時候。

我的問題是,如果我使用以下命令定期清除記憶體(我知道 Linus Torvalds 對記憶體的感覺),我的伺服器是否會得到更好的調整:

sync; echo 3 > /proc/sys/vm/drop_caches

或者我最好編輯以下文件:

/proc/sys/vm/swappiness  

如果我用 30 替換預設值 60,我應該有更少的交換和更多的陳舊記憶體重用。

看到使用第一個命令釋放所有記憶體確實感覺很好,但如果我告訴你這對桌面環境有好處,那我就是在騙你。但是像我上面描述的那樣的網路伺服器呢?想法?

編輯:我知道系統會在需要時從記憶體中獲取記憶體,但感謝您指出我們的清晰性。當大部分伺服器記憶體儲存在記憶體中時,當 Apache 變慢時,我是否在想像事情?這完全是一個不同的問題嗎?

清除記憶體會影響性能,而不是幫助。如果 RAM 需要用於其他用途,它將被其他用途使用,因此您所做的就是在執行清除後一段時間內降低記憶體命中/未命中率。

如果記憶體中的數據非常過時(即它是在不尋常的操作期間記憶體的內容),它將根據需要替換為“較新”的數據,而無需您人為地清除它。

正常執行的唯一原因sync; echo 3 > /proc/sys/vm/drop_caches是,如果您要嘗試進行一些 I/O 性能測試並希望從一個已知狀態開始(在執行之間執行記憶體刪除以減少由於記憶體在每個執行上不同而導致的結果差異)跑步)。

核心有時會交換幾個頁面,即使它可以從記憶體/緩衝區中收回大量 RAM,如果您發現它對您的伺服器來說是一個問題,調整交換設置可以阻止它。您可能會從中看到一點好處,但可能會通過人為地清除記憶體+緩衝區而看到暫時的性能下降

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