タイムアウトを避けるために、GC の前に Tomcat が nginx アップストリームから自動的に削除されるようにするにはどうすればよいですか?
为情所困
为情所困 2017-05-16 17:21:13
0
1
652

Tomcat は時々 fullgc を実行します。この時点で nginx がリクエストを送信すると、リクエストはタイムアウトになります。

解決策の 1 つは、nginx 側でタイムアウトを短く設定することです。応答がない場合は、マシンを変更してリクエストを再送信します。ただし、問題は、このリクエストは副作用であり、再度リクエストを行うことができないことです。

質問したいのですが、nginx が gc の前に Tomcat を自動的に削除し、gc が完了した後に自動的に追加し直すメカニズムはありますか?

要するに、Tomcat gc によるタイムアウトの影響を回避するためです~

追記:

nginx のアップストリームは複数の Tomcat で設定されています。GC が 1 回発生する限り、このマシンに送られるすべてのリクエストはタイムアウトになります。

为情所困
为情所困

全員に返信(1)
淡淡烟草味

Tomcat にはメモリ オーバーフローを防ぐためのリスナーがあります:

リーリー

これは System.gc() の調整が原因であると思われます。この GC は stop the world メソッドを使用している可能性があります。これは、非同時実行であることを意味します。次の 2 つのオプションを試すことができます:

1.-XX:+ExplicitGCInvokesConcurrent 同時 GC
2. リスナーを無効にするか、JVM レベルからの直接呼び出しを無効にします -XX:+DisableExplicitGC

その後、しばらく観察してください。

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