検索

ホームページ  >  に質問  >  本文

500 - nginx が 5xx エラーを減らす方法

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

解決策はありますか?

为情所困为情所困2745日前705

全員に返信(2)返信します

  • 漂亮男人

    漂亮男人2017-05-16 17:22:56

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

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:22:56

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

    返事
    0
  • キャンセル返事