Linux 機器上無法解釋的記憶體 RAM 下降
我執行 CentOS 5.7 64 機器,記憶體為 24gb 並執行核心 2.6.18-274.12.1.el5。
這台機器只執行 Nginx、php-fpm 和 Xcache 作為額外的應用程序。
大約 3 週以來,我在這台機器上的記憶行為發生了變化,我無法解釋原因。沒有執行像這樣刷新任何東西的 crons。在這些刪除期間也沒有大量文件被刪除/更改。
“記憶體”記憶體大約每隔幾個小時就會失去一次,但刷新之間從來沒有設置過間隙,這對我來說表明達到了一些瓶頸。當總記憶體使用量達到大約 18GB 時,它似乎也總是如此,但同樣,並不總是正好是 18GB。
這是我的記憶體使用情況圖:
正如您在圖中看到的那樣,“緩衝區”總是或多或少保持不變,主要是被丟棄的“記憶體”。
執行
vmstat -m
我在記憶體下降之前和之後輸出了記憶體使用情況。輸出在這裡:http ://pastebin.com/diff.php?i=hJqZqztm ‘old version’ 是之前,’new version’ 是在下降之後。大約 3 週前,我的伺服器在一次嚴重的 DDOS 攻擊中崩潰,在我重新啟動機器後,這種奇怪的行為開始了。我檢查了一堆日誌,再次重新啟動機器,但找不到任何改變的跡象。
在這些“記憶體”記憶體下降期間,我的 iNode 使用率同時下降。
有誰知道可能導致這種行為的原因是什麼?顯然我的 RAM 沒有滿,所以我很好奇為什麼會發生這種情況。
通過放置 vm.zone_reclaim_mode = 0 解決了它
套接字在接受()-ed 連接時創建 inode,因此 inode 行為可能分別來自於打開或關閉的大量連接。這可能發生在(如鍊接的問題中)logrotate 殺死一堆 FastCGI 程序時。不確定這是否適用於 php-fpm。
只是一個瘋狂的理論,並不能真正解釋為什麼同時清除記憶體。不過,值得一看嗎?