Word Pressをバージョンアップでダウン

Word Pressのバージョンを0.1だけ新しいバージョンにアップしたら、サーバーが過負荷で倒れました。

以下経緯と対策です。

経緯

更新

Word Press とプラグインとテーマ、翻訳も更新しました。
ついでにOSも久しぶりにアップデート

OSは、モジュールの追加 43パッケージ、更新 145パッケージ、削除 1パッケージ
ダウンロード231ファイル339MB
418トランザクション(Install Update Clean Erase)Verifyも418トランザクション

全てノートラブルで自動更新完了。
サイト表示も問題なし。

更新して変わったことは、書式のショートカットが使えるようになったことと、ライブプレビューしながらのメニュー更新くらいですが、あまり使わないのでご利益を感じません。

アラーム発生

1時間ほどすると、突然アラーム発生。HTTPDの応答がタイムアウトです。

症状
  • AWSのダッシュボードでインスタンスのステータスと、モニタリングを確認。どちらも問題なし。
    AWSダッシュボードのモニタ
  • インスタンスにSSHでアクセス(AWSのダッシュボードからのMind Term)するもタイムアウト。
  • PUTTTYでインスタンスにアクセスすると、異常にレスポンスが遅くログインに2分ほどかかったが何とかログインできる。
  • vmstatで見ると、CPU負荷のうちwa(IO待)が90%以上になっており、合計が100%に張り付いている。
  • savamoniでもCPU負荷増大と、メモリ消費増大、スワップ消費増大を確認
    Savamoniでのモニタ
    CPU負荷が100
    %に貼り付いているのが障害中(HTTPDを止めると負荷減少)
  • vmstatでSystem CS(コンテクストスイッチ)も250から350と通常の3倍以上
  • httpdを停止すると、vmstatのwaやcsの値が通常に戻る
  • httpdを起動すると、vmstatのwaやcsの値が上昇していき、httpdのレスポンスタイムアウトとなる。
  • さらに放置しておくと、SWAPも消費しつくし、MySQLも応答しなくなる。
結論

WordPressのバージョンアップによるメモリ消費量の増大により、非力なサーバがトドメを刺された。

トドメが挿された経緯は以下のようなものだと思われる。

  1. メモリ消費量が増大し、スワップが多発。
  2. スワップに伴うDISK IOも増大
  3. 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を起動するととりあえず動いています。