OOM Killerにプロセスがkillされるのを防ぐ方法

OOM(Out of Memory)。嫌な響きですね…。

なぜ嫌かと言うと、OOMが発生することで、予期せぬプロセス停止(Kill)が発生するからです。

そのことを「OOM Killer」と言います。

空きメモリを確保するための仕組みですが、業務上必要なプロセスをKillされることもあるため、大事なプロセスについてはOOM Killerの対象にならないようにしたいところ。

OOM Killerは、各プロセスの「oom_score」値を参照し、その値が高いものをkillする対象として選択します。

「oom_score」は以下のコマンドで確認できます。

※pidはプロセスIDです。

「oom_score」ですが「oom_adj」によって調整されます。

oom_adjの有効な値は「-16」から「+15」の範囲。

そしてここからが重要。
「oom_adj」ですが、その有効範囲外の値「-17」を指定することで、そのプロセスを「OOM Killer」の対象から外すことができます。

つまり、プロセスを「OOM Killer」にkillされないようにするためには、そのプロセスの「oom_adj」を「-17」 に設定すれば良いことになります。

設定方法は以下の通りです。

非常に簡単。


※pidはプロセスIDです。

Killされたくないプロセスにはこの設定をいれておきましょう!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする