Nginxエラーログ:アップストリームから応答ヘッダーを読み取っているときにrecv()が失敗しました(104:ピアによって接続がリセットされました)



Nginx Error Log Recv Failed 104



他の同僚から最近受け取ったフィードバック:httpインターフェイスの呼び出しが頻繁に表示されます 接続がタイムアウトしました 、Tomcatでビジネスログを表示するにはcatalina.out重要な手がかりはありません、疑いreload Nginxは短期的なネットワークの問題を引き起こしましたが、この推測を言うのは少し恥ずべきことでした。長くはかからなかったいい顔だ!サービスコールが再び異常になり、動作する場合もあれば、動作する場合もあります 接続がタイムアウトしました

リンク全体からログを確認する方法はありません。リンクはおそらく次のようになります。



The request sent by the frontend → nginx → ip hash mode to the web server

Webサーバーは有用なログを見つけることができないため、nginxにアクセスして見つけることしかできません。案の定、nginxエラーログに多くのエラーログが見つかりました。

[error] 26621#0: *50585595 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: xxx.xxx.xx.xxx...

エラーを見つけましたが、問題はまったく解決しませんでした。不快でした。家は夜の雨に漏れ、CPUから200%の警告メールを受け取りました。少し興奮しました。 use topどのプロセスがこのような高いCPUを使用しているかを確認するコマンドは、Javaプロセスです。usepwdx pidプロセスが配置されているパスに移動します。



pidに対応するプロセスが正常に機能していないと推定されます。最も高いCPUを占有している2つのスレッドを見て、それが実行されていることを確認しますFull GC動作しています。この時点で、私はおそらく何が起こっているのかを知っています。 Tomcatプロセスは、メモリリークが要求の処理に失敗したと推定し、プロセスのサイト情報をすばやく保存してから、Tomcatを再起動します。再起動後、nginxは生成されなくなります。recv() failed (104: Connection reset by peer)エラーログ。


総括する
システムが表示されたときに良い例外または悪い例外がある場合は、最初にそれに注意を払う必要があります。 サーバーに流入する最初のサイト と同様 CPU 状況