チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

データベース接続確立エラー時の対処はログを確認して対処(今回の原因:メモリ不足)

この状態はまず、WEBサーバは動いている。
今回はWordpressで動作しているNEWS、TOPページのみ表示できず、静的ページは見れる状態だった。

状況確認

まずSSHでログインしてログを確認
view /var/log/messages
web kernel: Out of memory: Kill process 32316 (mysqld) score 18 or sacrifice child

こんなエラー発見。mysqlが死んでる。。

※メモ
Out of memoryとは俗にOOMエラーと呼ばれ、メモリ不足時にLinux自体が死ぬことを回避するために、
ランダムでチョイスしたプロセスを強制終了する。(デフォルト動作。変更も可能)

解決

mysqldを起動して解決

今後のために覚えておくべきコマンド

free
→メモリ使用状況の確認。Swapメモリも確認できる。
total used free shared buffers cached
Mem: 28900 28072 828 0 332 3068
-/+ buffers/cache: 24672 4228
Swap: 32760 32760 0
→上記の場合はもう末期状態。Swapも使い果たしてしまい、この後デフォルトならOOMが発生するはず。


vmstat
→Swap in,Swap outの値を確認。
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy wa id
0 0 32760 892 336 3088 4 29 41 64 106 24 1 3 0 96
→この状態も末期。
実メモリの空きが足りなくなって、スワップに退避させたり(swap out)、 状況が解消されてメモリに戻したり(swap in)するとき、 これらの値が増加。


まとめ

あくまで今回はメモリ不足だったが、ログを確認して適切な対処をすることが大切。
Wordpressなら単純にwp-config.phpに書いてあるDBの接続情報が間違っている、誰かが変更したとかということも実際に過去にあった。


この記事の内容とは違う!アクセス過多ぽい・・・と思う方はこちらが参考になるかも。
MySQLでToo many connectionsが出た時の対応 - Qiita