I/O Wait のボトルネックのトラブルシューティング

要点まとめ:

  • 中程度の負荷下で iowait によりシステムが数分間麻痺
  • その時点でのディスク I/O は顕著ではない
  • DigitalOcean はハイパーバイザー上で異常な活動はないと断言

詳細版:
現在は DigitalOcean の 8 コア/16 GB ドロプレットで稼働中。一時的な重負荷を想定し、最近 4 コア/8 GB からアップグレードしました。

問題発生時、db_shared_buffers は 2 GB、Unicorn ワーカーは 8 に設定されていました。その後、両方を増やしました。

約 2 時間にわたるライブイベント中に、単一のトピックへの投稿が集中しました。この期間の総ユーザー数は約 200 名、Analytics によると同時接続数は平均して約 70 名でした。

システムは 1 時間以上安定しており、負荷平均は 4 前後、CPU は約 30%、メモリは約 35% を推移。ディスク活動は目立たず、フォーラムにも問題はありませんでした。

突然、Analytics 上のユーザー数が倍増しました。これが実際のユーザーなのか、別の問題によるアーティファクトなのかは不明です。当コミュニティは規模も知名度も大きくなく、外部からのリンクもほぼなく、急に多数の新規ユーザーが増えることは極めて異例です。

同時に iowait が深刻なレベル(50% 超の警告が持続)に達しました。1 分負荷平均は 12 まで急上昇し、5 分負荷平均は 8 を超えました。システム全体が非常に応答性を失い、フォーラムは極端に遅くなり、高負荷による一時的なログアウトが多数発生しました。CPU 使用率は 40% を超えることはありませんでした。

この状態は 3〜4 分間続き、その後 10 分かけて徐々に平常に戻りました。DigitalOcean のグラフによると、ディスク I/O は全体を通じて 1 MB/s 未満(主に書き込み)でした。

これはフォーラムや設定の問題でしょうか?DigitalOcean が嘘をついていて、実際にはハードウェアの問題なのでしょうか?前者の場合、再発防止のための提案はありますか(これは初回ではありません)?

間もなく、コミュニティにとって極めて重要な、もう一度の大規模な一時的な重負荷イベントが控えています。試行錯誤で何かが機能するかを確認する余裕はありません。成功も失敗も、たった一度のチャンスです。

これはあなたの問題に関連しているかはわかりませんが、最近、ライブイベントとそれによって引き起こされる活動の急増について多くの議論が行われています。