WordPressのWebサイトがデータベース接続確立エラーを出したとき
t2.microでWordPressを動かすつらみ、わかる?
nginx + WordPressとかいうナウくて(?)イケイケ(?)な構成を試した時の覚書
静的ページしか必要ないならStaticPress + S3でいいじゃん……というのはわかった上で
t2.microというところでだいたい察すると思うが、先に結論を言っておくとメモリ枯渇のお話
構成
めちゃくちゃざっくり表すとこんな感じ
問題
WordPressで作成したWebサイトを見ていると、ランダムに「データベース接続確立エラー」が発生する
原因
php-fpmの設定がデフォルトのままだった
そのため、php-fpmの子プロセスが増え続け、インスタンスがメモリ枯渇を起こしていた
なお、 t2インスタンスにはswap領域が無い
調査
対応
- /var/log/messages を確認 -> パイプで繋げて grep -i "Out of memory" と検索すると楽
- top コマンド実行後、 Shift + mキーでメモリ使用率が高いプロセスごとにソート -> ここでメモリ使用率が高いサービスのプロセス数確認
- ps aux | grep -i "php-fpm" -> 今回の事例ではphp-fpmの子プロセス数が多かったので個数確認
ここでphp-fpmの子プロセスが40個ほどまで増殖していたのが判明
/etc/php-fpm.d/www.conf の設定を変更する
;pm = dynamic
pm = static
;pm.max_children = 50
pm.max_children = 10
あくまで「誰も見ないような規模のWebサイト」の設定なので、状況に合わせて数値を変動させる必要がある
雑感
デフォルトの設定のままにするな
せめて t2.small にしよう
追記
仕事終わりに雑談に付き合ってくれるお姉さんにめぐりあいたい……めぐりあいたくない?