nginx、proxy_pass の再試行の問題について
高洛峰
高洛峰 2017-05-16 17:23:48
0
1
829

親愛なるマスターの皆様、私の nginx は proxy_pass を通じて Tomcat を調整しますが、Tomcat が断続的にけいれんし (fullgc)、約 7 ~ 8 秒のタイムアウトが発生します

初回リクエスト時にタイムアウトを1秒などに設定する方法を考えましたが、タイムアウトになったら再度リクエストする(マシンを変える)だけです

次に、次の nginx 構成を作成します (以下は flask のスリープを使用して Tomcat の fullgc をシミュレートしています)

リーリー

8088と8089のサービスは私が書いたモックサービスです
8088 は 2 秒間直接スリープし、nginx がタイムアウトになります
8089 は直接「hello world」を返します。200

私の期待は
コマンド ライン curl を使用して 8087 を繰り返しリクエストすると、常に「hello world」が返されます。ただし、リクエストによっては速いものもあれば遅いものもあります (タイムアウト後に再実行されるため、1 秒以上かかります)。リクエスト) リクエスト)

しかし、結果はこのようにはなりません

リクエストが 1 秒を超えると、8087 は直接 504 エラーを返します

nginx バックグラウンド ログを表示する場合:
3 つのタイムアウト レコードが連続して出力されました:

しかし、8088 (スリープ サービス) は 1 つのリクエストしか受信しませんでした (フラスコに書かれたいくつかの小さな例外)

その後、Wireshark を使用してパケットをキャプチャしたところ、次のことがわかりました。

誰か助けてくれませんか?

私の設定に何か問題があるのでしょうか??

ここには無関係な情報が含まれている可能性があります。役に立たない場合は無視してください~

Tomcat fullgc タイムアウトの問題に対する他の良い解決策があれば、私も非常に感謝します~

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(1)
给我你的怀抱

あなたが 1 回の試行を要求すると、nginx はそれを 1 回試行します。

トライとリトライは違います。 proxy_next_upstream_tries 2; を試してみます。また、proxy_next_upstream_timeout の意味を誤解しているようです。それも外してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!