web-dev-qa-db-ja.com

oom-killer killingプロセスの原因を診断する方法

CentOSとwww/mail/dbを実行している小さな仮想プライベートサーバーがあり、最近Webサーバーとsshが応答しなくなったいくつかのインシデントがありました。

ログを見ると、おそらくメモリ不足とスワップが原因で、oom-killerがこれらのプロセスを強制終了したことがわかりました。

誰かが私に最新のインシデントを引き起こしたかもしれないものを診断する方法のいくつかの指針を与えることができますか?最初のプロセスが強制終了された可能性がありますか?他にどこを見ればいいですか?

9
dunxd

いいえ、アルゴリズムはそれほど単純ではありません。あなたはより多くの情報を見つけることができます:

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を使用することをお勧めします。リモートコンソールがない場合は、マシンにアクセスできなくなることを防ぐことができます。

幸運を祈ります
ジョアン・ミゲル・ネベス

11
jneves

Oom-killerが踏みつけたプロセスが必ずしも失敗したプロセスではないため、私は最近それに苦労しました。それを診断しようとしているときに、私は今、お気に入りのツールの1つについて学びました。

このユーティリティは、ステロイドのトップのようなものです。事前設定された時間間隔で、システム情報をプロファイルします。その後、再生して何が起こっているかを確認できます。青で80%+、赤で90%+のプロセスを強調表示します。最も有用なビューは、前回の期間に割り当てられたメモリ量のメモリ使用量テーブルです。それは私を最も助けたものです。

素晴らしいツール-それについて十分に言うことはできません。

パフォーマンスモニターの上

6
pboin

OOMは、その時点でメモリ使用量が最も多いプロセスのみを強制終了します。制限を超えたプロセスや、OOmコールが急増したプロセスとは限りません。
また、Linuxはメモリ割り当てが緩いです。 AKAプロセスが5GBを必要とするが3しか使用していない場合、Linuxは別のプロセスが2を使用しないようにしますパフォーマンス>信頼性。次に、p1が完全な5を必要とする場合、それを取得できません

Exeprtではありません。自分自身と私が見つけたものを扱うだけです

1
mwans

これは oom-killeを飼いならすことに関する記事 rが特に便利に見えます。優先順位を設定して、oom-killerが特定のプロセスを強制終了しないようにすることができます(sshdはVPSの良いスタートです!)

1
dunxd