今日はまさかのWordPressがDB接続確立errorで見られなくなりました。
かなりゾッとしたので、バックアップのcron回します。
あとDB接続したらレイアウトがガタガタに崩れていたので
きちんとgit管理します🙋
異常終了によるロック状態になっていたため
ロックファイルの削除をしてDB起動しました。
以下、作業ログです。
作業ログ、ここに残してもまたDB確立error起きたら見られないんだけどね..
暗記しよう😃
$ service mysqld status
$ cd /var/lock/subsys/
$ rm -rf mysqld
$ sudo su -
# service mysqld start
帰宅後サーバー内に入り、原因調査をしました。
$ cd /var/log/
$ tail -n200 mysqld.log
2019-12-17 03:44:07 3906 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-12-17 03:44:07 3906 [ERROR] Plugin 'InnoDB' init function returned error.
2019-12-17 03:44:07 3906 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-12-17 03:44:07 3906 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-12-17 03:44:07 3906 [ERROR] Aborting
2019-12-17 03:44:07 3906 [Note] Binlog end
2019-12-17 03:44:07 3906 [Note] Shutting down plugin 'partition'
2019-12-17 03:44:07 3906 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2019-12-17 03:44:07 3906 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2019-12-17 03:44:07 3906 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2019-12-17 03:44:07 3906 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2019-12-17 03:44:07 3906 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
~~~~~~~略~~~~~~~
ERRORし始めて、しばらくしたらShutting down plugin
が始まっているのが分かります。
調べたところメモリ枯渇みたいなので
swap領域サイズを広げることで対策できそうでした。
よし、じゃあswap領域どのくらいかチェックするぞ〜😃
# free
total used free shared buffers cached
Mem: 1009496 936620 72876 164 6584 53944
-/+ buffers/cache: 876092 133404
Swap: 0 0 0
ない….(ドン引き)
「t2.microにお勧めのswap領域」
と、まとめサイトのタイトルみたいなググり方して
『だいたい2倍』
と、出てきたので設定ログ残します。
EC2ってデフォルトでswap領域ないという事実を知りました!
$ cd
$ cd ..
$ sudo chmod 777 tmp
$ sudo dd if=/dev/zero of=/tmp/swap.img bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 32.5234 s, 66.0 MB/s
$ du -h /tmp/swap.img
2.1G /tmp/swap.img
$ sudo chmod 600 /tmp/swap.img
$ sudo mkswap /tmp/swap.img
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=76115d1b-feaa-4ea6-b74f-fd8392cd6539
$ sudo swapon /tmp/swap.img
$ free -m
total used free shared buffers cached
Mem: 985 923 62 0 1 15
-/+ buffers/cache: 906 79
Swap: 2047 0 2047
できました👏
おまけでaccess_logチェックしたコマンドも置きます。
(以前Nginxのアクセス数を表示させたやつのApache用に書き換えたものです)
grepで例外指定して本日分の行数をcatさせます。
約600件なので、そのくらいを表示させてアクセスの多い時間を特定します。
だいたい当たりがついているのであればgrepで時間指定しても良いかもです。
$ cat /var/log/httpd/access_log | grep -v 126.36.***.*** | grep -v 39.110.***.*** | grep '17/Dec/2019' | wc -l
630
DB接続できていなくて焦ったけれども
障害調査して対策までできてblogのネタにも出来たので
良い感じのerrorでした😃おやすみなさい〜