CentOS7 Out Of Memory process killedが出たので対処
エラー
以下のエラーが出て、知らない間にCentOS7上のサービスが停止していた。
out of memory kill process
以下のように確認したところmysqldがkillされてた…
$ sudo cat /var/log/messages | grep Killed
kernel: Killed process 1241 (mysqld) total-vm:1675 012kB, anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
kernel: Killed process 1645 (mysqld) total-vm:6585 04kB, anon-rss:18672kB, file-rss:568kB, shmem-rss:0kB
対処
どうやら/proc/PID/oom_adjを触ることで、Killされる優先順位を変えれるらしい。今回は取り合えず、mysqldの落ちる優先度を下げておくことにしました。
サーバを再立ち上げしていたので、ps auxでmysql関連のPIDを確認
$ ps aux
...
mysql 988 0.0 0.0 9692 652 ?
...
mysql 1243 0.1 2.8 1631236 29320 ?
この二つの優先度を-16(優先度最低)に変更しておきます。-17にするとOOM killerの対象外になるらしいですが、さすがにそれもやりすぎ感があるので、-16にしておきました。
$ echo -16 > /proc/988/oom_adj
$ echo -16 > /proc/1243/oom_adj
とりあえず、しばらくこれで様子見してみます。ただ、メモリが枯渇した根本原因は別にあると思うので、もっと調査したほうが良さそうですが。