困っていたこと
t2.microで作ったEC2にWordPressを稼働しているのですが、最近数週間、サイトが落ちることがよく起きていた。原因調査する時間もなく、都度コンソール画面にて、インスタンスを再起動して凌いていました。 しかし、2022/10/16の日には、再起動してもサイトが上がってこず、ハード障害でも起きていたかのような症状でした。システムログをみると、下記のようにどうやら mariadb に segfault が起きているんじゃないか。
[ 8.460429] mariadbd[3188]: segfault at 564343c7dfa8 ip 0000560340ebd202 sp 00007fac807f2a08 error 4 in mariadbd[560340800000+150e000]
## 原因分析
早速SSHでログインして、まずディスク容量を確認した所、なんと30GBの両方が100%使用中になっている!
$ df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 devtmpfs 485340 0 485340 0% /dev tmpfs 493848 0 493848 0% /dev/shm tmpfs 493848 416 493432 1% /run tmpfs 493848 0 493848 0% /sys/fs/cgroup /dev/xvda1 31444972 31444244 728 100% / tmpfs 98772 0 98772 0% /run/user/1000
これが原因であることをほぼ確信しました。
## 解決方法
最初は、容量を増やす方法を考えてみましたが、費用が増大するのと、WordPressで大したブログを書いていないのに、なぜそんなに容量を食うの? 納得しませんでした。
そして、余計なファイルを削除する方向で動きました。
### ログファイルを削除して容量を増やす
`/var/log/journal/`の1GB以上の容量もあることが分かったので、下記コマンドで直近の7日間のファイルだけ残して、約1GBを容量を空けることができました。
$ journalctl –disk-usage $ sudo journalctl –vacuum-time=7d
※参考資料:[ジャーナルファイルを削除したい場合・journalctl](https://linux.just4fun.biz/?Linux%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/%E3%82%B8%E3%83%A3%E3%83%BC%E3%83%8A%E3%83%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4%E3%81%97%E3%81%9F%E3%81%84%E5%A0%B4%E5%90%88%E3%83%BBjournalctl)
これで、100%の使用中が97%に変わりました。これでサイトを立ち上がれる!
### 不要のPluginを削除
インスタンスを再起動した所、案の定WordPressを足りあげることができましたので、不要なPluginを削除しました(大した容量拡大にはなりませんでしたが)。
### Mariadbのテーブル最適化(効果絶大)
`sudo du -sm ./* | sort -rn | head -5`コマンドでみたら、`/var/lib/mysql`はなんと`24GBも食っていることが分かりました。
この資料:[[MySQL] 断片化した InnoDB テーブルを最適化する](https://agohack.com/mysql-fragmention-optimization/) を参考にしました。
`wp_options`テーブルと`wp_posts`テーブルに対して、
$ sudo mariadb MariaDB [(none)]> use wp-db; MariaDB [(none)]> optimize table wp_options; MariaDB [(none)]> optimize table wp_posts;
のように最適化しました。そして、mariadbを再起動した所、なんと、ディスク使用量が18%まで下がりました!
$ df ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置 devtmpfs 485340 0 485340 0% /dev tmpfs 493848 0 493848 0% /dev/shm tmpfs 493848 416 493432 1% /run tmpfs 493848 0 493848 0% /sys/fs/cgroup /dev/xvda1 31444972 5588584 25856388 18% / tmpfs 98772 0 98772 0% /run/user/1000 ``` 効果絶大です。 WordPressで動作確認した所、特に問題はありませんでした。 めでだしめでだし!