これはやや複雑な状況です。haproxy の背後にある 16 の負荷分散されたサーバーからアプリケーションを提供します。アプリに関連付けられた画像は、haproxy ロード バランサーの背後にある nginx を実行している別のサーバーから提供します。この画像サーバーから画像をプルし、将来のサービスのためにキャッシュするグローバル CDN があるため、3 億枚ほどの画像を処理しても、このサーバーの負荷は非常に低くなります。
さて、昨日、RAID アレイ内のドライブをイメージ サーバー用に交換する必要がありました。削除したとき、もちろん一部の画像が読み込まれなくなることは予想していましたが、代わりに、はるかに深刻な問題に遭遇しました。アプリ サーバーへの接続が急増し、クラスター内のサービスを提供できなくなりました。私の考えでは、アプリのリクエストがロード バランサーに送られ、アプリ サーバーにヒットし、画像が提供されるのを待っている間、そこでハングしていました。サーバーがダウンしたため、引き続きリクエストが入り、システム全体がロックされました。
将来的にはこのような状況は避けたいと思います。これに適切なタイムアウトを設定するためにどこを見る必要があるか、またはロードバランサーでそれを処理する方法についての提案はありますか? これが発生した場合は、画像なしで、通常どおりアプリをロードすることをお勧めします。