Linux

如何診斷oom-killer殺死程序的原因

  • February 18, 2020

我有一個執行 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 自動重啟它們。如果您沒有遠端控制台,它可能會避免失去對機器的訪問權限。

祝你好運,

若昂·米格爾·內維斯

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