状況
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等のメモリが少ないインスタンスの場合、放置しているだけでメモリの使用量がいっぱいになり、『データベース接続確立エラー』が発生しやすい。