アプリケーション ロード バランサーを備えた EC2 でホストされている node/express で記述されたマイクロサービスがあります。
一部のユーザーは、リクエストがサーバーに到達する前であっても 502 を受け取ります。
各インスタンス内のすべてのログを登録しますが、これらのリクエストのログはありません。502 の直前にリクエストがあり、502 の直後にリクエストがあります。そのため、リクエストがサーバーに到達しないと想定しています。ほとんどのユーザーは、ページを更新するか、別のマシンに接続する匿名タブを使用することでこれを解決します (6 台あります)。
ロード バランサーのログから、ロード バランサーが 502 でリクエストにほぼ即座に応答することがわかります。これは TCP RST である可能性があると思います。
私はずっと前に同様の問題を抱えていたので、ノード構成にkeepAliveTimeout
とを追加する必要がありました。headersTimeout
これが私の設定です(まだ60年代のLBデフォルトを使用しています):
server.keepAliveTimeout = 65000;
server.headersTimeout = 80000;
すべてのインスタンスのメトリクス、特にメモリと CPU の使用率は問題ありません。
これらの 502 エラーは、axios などのいくつかのパッケージを導入した更新後に発生しました。デフォルトではキープアライブが有効になっていないため、最初は axios ではないかと考えました。しかし、うまくいきませんでした。axios以外では、 requestを使用するだけです。
この問題をデバッグ/修正する方法に関するヒントはありますか?