CentOS7 Out Of Memory process killedが出たので対処
エラー
以下のエラーが出て、知らない間にCentOS7上のサービスが停止していた。
01 | out of memory kill process |
以下のように確認したところmysqldがkillされてた…
01 02 03 04 | $ 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を確認
01 02 03 04 05 | $ ps aux ... mysql 988 0.0 0.0 9692 652 ? ... mysql 1243 0.1 2.8 1631236 29320 ? |
この二つの優先度を-16(優先度最低)に変更しておきます。-17にするとOOM killerの対象外になるらしいですが、さすがにそれもやりすぎ感があるので、-16にしておきました。
01 02 | $ echo -16 > /proc/988/oom_adj $ echo -16 > /proc/1243/oom_adj |
とりあえず、しばらくこれで様子見してみます。ただ、メモリが枯渇した根本原因は別にあると思うので、もっと調査したほうが良さそうですが。