zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

WordpressのMySQLがoom_killerで落とされた

【状況】

Wordpressのサイトが
データベース接続確立エラー
とか
Error establishing a database connection
とか言ってきた。

サーバに入ってMySQLのプロセスを確認
ps aux | grep mysql
→ない。
→ログ確認
/var/log/messages

May 22 14:46:25 hogehoge kernel: [36271139.069945] php-fpm-5.5 invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0

cat /var/log/messages | grep Killed

May 22 14:46:25 hogehoge kernel: [36271139.527800] Killed process 2559 (mysqld) total-vm:2066588kB, anon-rss:761800kB, file-rss:0kB

MySQLがoom-killerにより落とされた模様。

mysqlのoom_killerの優先度を下げる

【参照】
http://hacknote.jp/archives/8356/hacknote.jp


強制終了プロセスの優先順位を以下の様にすることで
mysqlは殺されないようになる

vi /srv/bin/oom_update.sh

#!/bin/sh
 
# down mysql score 
mysql_pid=`cat /var/run/mysqld/mysqld.pid`
 
if [ "$mysql_pid" != "" ]; then
  echo "-17" > /proc/${mysql_pid}/oom_adj
else
  echo "can't get pid number"
fi


chmod +x /srv/bin/oom_update.sh
/srv/bin/oom_update.sh

# 確認
dstat --top-oom

--out-of-memory---
    kill score
php-fpm: pool  52

PHP-FPMの子プロセス数を減らす

なおメモリのほとんどはphp-fpmが食っているので、プロセス数を減らした。

/etc/php-fpm.d/www.conf

;pm.max_children = 25
pm.max_children = 15

service php-fpm restart
service nginx restart

これで様子見・・・・・・