WordPressのブログが「データベース接続確立エラー」と出て表示されない症状が再発
サーバーを入れ替える前の話だが、以前書いた症状がちょくちょく起きている。
色々調べたところ、どうもメモリが不足して落ちることがあるっぽい。
ひとまず応急処置として、定期的にmariadbの状態を確認して、もし落ちている場合は起動するシェルスクリプトを作ってcrontabで設定して定期的に実行するようにしたので、手順をメモ。
環境(発生当時の環境)
さくらのVPSで契約したサーバーに以下をインストール。
CentOS 7
mariadb 10.6.5-1
シェルスクリプトの作成&crontabの設定
シェルスクリプトは/usr/local/binに置くのがよさそうなのでこちらにdbcheck.shという名前で以下のようにシェルスクリプトを作成。
#!/bin/bash if (( $(ps -ef | grep -v grep | grep mariadbd | wc -l) == 0 )) then systemctl start mariadb fi
あとはcronジョブを作成して、定期的にスクリプトが実行されるようにする。cronジョブはシステムのジョブとユーザーのジョブがあるが、今回はユーザーのジョブとして作成する。cronジョブについては以下を読んで勉強した。
https://learning.lpi.org/ja/learning-materials/102-500/107/107.2/107.2_01/
やることは簡単で、crontab -eを実行して以下のように設定して、1時間ごとにシェルスクリプトが実行されるようにした。ちなみにcrontabの設定はユーザーごとに設定されるので、実行したいユーザーで設定すればOK。
0 * * * * bash /usr/local/bin/dbcheck.sh
なお、crontabの機能として実行された際にユーザーのメールボックスにメールが届く。メールは以下で確認することができる。
/var/spool/mail/ユーザ―名