Linux
如何診斷oom-killer殺死程序的原因
我有一個執行 CentOS 和 www/mail/db 的小型虛擬專用伺服器,最近發生了幾次 Web 伺服器和 ssh 無響應的事件。
查看日誌,我看到 oom-killer 已經殺死了這些程序,可能是由於記憶體和交換空間不足。
誰能給我一些關於如何診斷可能導致最近事件的指示?它可能是第一個程序被殺死嗎?我還應該去哪裡尋找?
不,算法沒有那麼簡單。您可以在以下位置找到更多資訊:
http://linux-mm.org/OOM_Killer
如果您想跟踪記憶體使用情況,我建議您執行如下命令:
ps -e -o pid,user,cpu,size,rss,cmd --sort -size,-rss | head
它將為您提供使用最多記憶體的程序列表(並且可能導致 OOM 情況)。
| head
如果您希望檢查所有程序,請刪除。如果你把它放在你的 cron 上,每 5 分鐘重複一次並將它保存到一個文件中。至少保留幾天,以便稍後檢查發生的情況。
對於像 ssh 這樣的關鍵服務,我建議在這種情況下使用 monit 自動重啟它們。如果您沒有遠端控制台,它可能會避免失去對機器的訪問權限。
祝你好運,
若昂·米格爾·內維斯