396
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

Linux OOM Killerについて

OOMとは?

Linuxは、メモリが不足してシステムが停止する恐れがある際、メモリリソースを多く消費しているプロセスを強制的に殺します。これをOOM Killerといいます。重要なプロセスでも問答無用で殺しにきます。

いるはずのプロセスがある日消えていたのなら、それはOOM Killerに殺されたのかもしれません

確認方法(CentOS)

5789のrubyのプロセスが殺されたことが分かります

$ sudo cat /var/log/messages | grep Killed
Oct  1 11:11:54 ip-xx-xx-xx-xx kernel: [1983378.957901] Killed process 5789 (ruby) total-vm:4957320kB, anon-rss:2717004kB, file-rss:0kB

Ubuntuなら/var/log/syslog

殺される可能性の高いプロセス

dstatの--top-oomオプションで簡単に候補を確認できます
これは/proc/PID/oom_scoreを見ています

$ dstat --top-oom
--out-of-memory---
    kill score
mysqld        484
mysqld        484
mysqld        484

対応策

mysqldとかを殺されるとさすがに困るので、強制終了するプロセスの優先度を決めることもできます

/proc/PID/oom_adjに(優先度低)-16から+15(優先度高)の値を設定することで優先度を設定できます

また、-17を設定するとOOM Killerの対象外になります

$ cat /proc/3333/oom_score 
2000

$ echo -4 > /proc/3333/oom_adj

$ cat /proc/3333/oom_score
100

参考図書

Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
396
Help us understand the problem. What are the problem?