500 - nginx が 5xx エラーを減らす方法
为情所困
为情所困 2017-05-16 17:20:56
0
2
728

nginx フロント エンド、バック エンドは n 個の docker コンテナ、および docker コンテナは nginx php-fpm です。各コンテナが失敗する可能性があることが知られています。コンテナが失敗すると、フロント エンドで 502 または 504 エラーが発生します。フロントエンドではネットワーク遅延が発生することがあります。

現在の慣行と問題点

nginx フロントエンドは tengine を使用し、ヘルスチェックをオンにします

  1. 間隔が 3 秒、フォールが 2 に設定されていると仮定すると、最後のチェックの直後にバックエンドがハングアップした場合、つまり、リクエストは引き続き障害のあるバックエンドに 6 秒近く転送されます。

  2. タイムアウトが 1 秒に設定されていると仮定すると、フロントエンド ネットワークが遅延すると、すべてのバックエンドが即座にタイムアウトになり、502 がユーザーに直接返されます。ただし、タイムアウト値を増やすと、ヘルス チェックはそれほど重要ではなくなります。通常、バックエンドは 50 ミリ秒以内に応答し、1 秒では高負荷のバックエンドを除外できなくなります。

バックエンド Docker は tengine を使用し、sysguard モジュールを有効にします

  1. 上記と同様、間隔内でハングアップした場合でも、一部のリクエストがバックエンドに到着します。バックエンドの負荷がしきい値で頻繁に変動する場合は、ヘルスチェックを行わない場合よりも 5xx エラーが発生する可能性があり、 sysguard

解決策はありますか?

为情所困
为情所困

全員に返信(2)
漂亮男人

フロントエンド アプリケーションのシナリオがどのようなものであるかわかりません。エラーがユーザーに直接公開される可能性はほとんどありません。再試行が求められます。この詳細な調査では、問題の根本を見つける必要があります

いいねを押す +0
曾经蜡笔没有小新

これは、負荷が重い場合は、プログラムを最適化するか、それでもエラーが発生するのは避けられないと感じています
タオバオも、システムが忙しいことがよくあります。 Zhihu は何も起こらない場合に独自のサーバーを提供します 質問

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート