Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
383
Help us understand the problem. What is going on with this article?
@konpyu

Linux OOM Killerについて

More than 5 years have passed since last update.

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 ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック

383
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
konpyu
software engineer
pieceofcake
cakes(ケイクス)とnote(ノート)を運営しています

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
383
Help us understand the problem. What is going on with this article?