Edited at

WordPressで「データベース接続確立エラー」の障害が出た時の対処


状況

AWS EC2上でWordPressを構築し、数ヶ月間運用していたところ、突如「データベース接続確立エラー」の画面が表示されるようになってしまいました。

ブログ記事画面だけでなく、管理画面も同じ表示です。


要約


  • EC2のメモリ使用量がいっぱいになり、MySQLプロセスが終了され、『データベース接続確立エラー』が発生

  • EC2のインスタンス再起動・MySQLサービスの起動で対処。


原因調査・対応


EC2にsshで接続

まずは sshで接続 します。

ssh -i "EC2のPEMファイル.pem" ec2-user@EC2のアドレス.compute.amazonaws.com


メモリ使用量チェック

しばらく使って突然発生、という状況なので、メモリがいっぱいになってないかをチェックします。

free -tm

used/freeの項目を見て、freeが少なくなっていたので、 EC2インスタンスを再起動 します。


再起動後にメモリ使用量チェック

再びメモリ使用量チェック。

free -tm

freeの量はかなり多くなっています。しかし、ブログ画面は相変わらず『データベース接続確立エラー』のまま。


MySQL診断

『データベース接続確立エラー』ということなので、データベースの状況を見ます。


MySQLに接続できるか確認

mysql -u ユーザー名 -pパスワード


ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)


繋がらない・・・!

ちなみにMySQLのユーザー名とパスワードは wp-config.php に書かれてることが多いです。


MySQLのプロセスが動いているか確認

ps -ef |grep mysqld


ec2-user 2622 2522 0 01:01 pts/0 00:00:00 grep --color=auto mysqld


む、プロセスがやっぱりない。


MySQLのポートが設定されてるか確認

sudo netstat -tnap|grep mysql

→レスポンスは空

ポートも使われてない


MySQL起動

MySQLが起動していなかったので、 MySQLを起動 させます。

sudo service mysqld start


Starting mysqld: [ OK ]



結果

起動しました!


まとめ


  • EC2のメモリ使用量がいっぱいになり、MySQLプロセスが終了され、『データベース接続確立エラー』が発生した。

  • EC2のインスタンス再起動することで、メモリをお掃除した。

  • 再起動後、MySQLサービスが起動していなかったので、手動でMySQLサービスを起動した。

  • 自動でMySQLも起動するように設定しておくとよい。

  • t2.nano等のメモリが少ないインスタンスの場合、放置しているだけでメモリの使用量がいっぱいになり、『データベース接続確立エラー』が発生しやすい。