Word Pressのバージョンを0.1だけ新しいバージョンにアップしたら、サーバーが過負荷で倒れました。
以下経緯と対策です。
経緯
更新
Word Press とプラグインとテーマ、翻訳も更新しました。
ついでにOSも久しぶりにアップデート
OSは、モジュールの追加 43パッケージ、更新 145パッケージ、削除 1パッケージ
ダウンロード231ファイル339MB
418トランザクション(Install Update Clean Erase)Verifyも418トランザクション
全てノートラブルで自動更新完了。
サイト表示も問題なし。
更新して変わったことは、書式のショートカットが使えるようになったことと、ライブプレビューしながらのメニュー更新くらいですが、あまり使わないのでご利益を感じません。
アラーム発生
1時間ほどすると、突然アラーム発生。HTTPDの応答がタイムアウトです。
症状
- AWSのダッシュボードでインスタンスのステータスと、モニタリングを確認。どちらも問題なし。
- インスタンスにSSHでアクセス(AWSのダッシュボードからのMind Term)するもタイムアウト。
- PUTTTYでインスタンスにアクセスすると、異常にレスポンスが遅くログインに2分ほどかかったが何とかログインできる。
- vmstatで見ると、CPU負荷のうちwa(IO待)が90%以上になっており、合計が100%に張り付いている。
- savamoniでもCPU負荷増大と、メモリ消費増大、スワップ消費増大を確認
CPU負荷が100%に貼り付いているのが障害中(HTTPDを止めると負荷減少) - vmstatでSystem CS(コンテクストスイッチ)も250から350と通常の3倍以上
- httpdを停止すると、vmstatのwaやcsの値が通常に戻る
- httpdを起動すると、vmstatのwaやcsの値が上昇していき、httpdのレスポンスタイムアウトとなる。
- さらに放置しておくと、SWAPも消費しつくし、MySQLも応答しなくなる。
結論
WordPressのバージョンアップによるメモリ消費量の増大により、非力なサーバがトドメを刺された。
トドメが挿された経緯は以下のようなものだと思われる。
- メモリ消費量が増大し、スワップが多発。
- スワップに伴うDISK IOも増大
- I/Oの処理がcpuからの要求に追いつかず、cpuでアイドルが発生した(wa)が増大
(AWSのダッシュボードは、waをCPU負荷にカウントしないので、CPUが高負荷と認識しないと思われる)
1GBしかないt2.microインスタンスでギリギリ動いていたものの、最後のひと押しをされた感じです。
対策
httpd.confを修正し、起動プロセス数、アクセス受付数などを小さくして、縮退しました。
アクセスが集中したときにレスポンスが悪くなりそうですが、レスポンスが無いよりましだろうという判断です。
変えたパラマメータは、
<IfModule prefork.c>
StartServers 元のまま
MinSpareServers 元の1/3に
MaxSpareServers 元の1/10に
ServerLimit 元の1/3に
MaxClients 元の1/3に
MaxRequestsPerChild 元の1/4に
です。
これでhttpdを起動するととりあえず動いています。