こんにちは工藤です。
Linuxの運用をしているとたまにやってくるoom-killer。
詳しい説明は割愛しますが、簡単に言うとメモリ不足が発生しシステムダウンを防ぐため、無差別にプロセスを殺してゆく機能です。不要なプロセスなら問題ないのですが(そもそも不要なら立ち上げないけど)重要なプロセスの場合は殺されてはたまったものではありません。いくらシステムダウンを防ぐためとはいえ、サービスの提供できないサーバなんか死んだも同然。本末転倒ですわ。
っつう事でoom-killerが発動する場合はそれはすでにシステムとして正常に稼働していない。という事にして、とっととシステムを再起動させます。その方がきっと傷口は小さくて済むはず。原因調査より復旧が優先だから!原因調査なんて賢い人がやってくれるハズです。
oomの発生時に直接再起動というプロセスは踏めないため、oom時にkernel panicになるように設定します。
/etc/sysctl.confに下記を追記しましょう。
vm.panic_on_oom=1
さらにいつも通りkernel panicになったら再起動するアレを入れておきます。
kernel.panic=60 (秒数はお好みで)
上記2行を追記したら
# sysctl -p
で適用します。
こうする事で、oom発動→kernel panic→再起動となります。
もう一度念のために
oomの原因調査は賢い人がやってくれるハズ!