6

2台のサーバーでmod_jkを使用してApache+Tomcatをセットアップしています。各サーバーには独自のApache+Tomcatペアがあり、すべての要求は2台のサーバー上のTomcat負荷分散ワーカーによって処理されます。

maxClientApacheとTomcatをどのように設定すべきかについて質問がmaxThreadあります。

デフォルトの番号は、 Apache: maxClient=150, Tomcat: maxThread=200

この構成では、サーバーのセットアップが1つしかない場合、Tomcatワーカーが一度に150を超える着信接続を受信することはないため、問題なく機能します。ただし、2つのサーバー間で負荷分散を行っている場合、Tomcatワーカーが150 +(別のサーバーからの数値)を受け取り、maxThreadをオーバーフローさせる可能性はありますSEVERE: All threads (200) are currently busyか?

もしそうならmaxThread=300、この場合、Tomcatを設定する必要がありますか?

ありがとう

4

1 に答える 1

7

maxThreadsを300に設定することは問題ありません-固定されたルールはありません。接続が拒否されているかどうかによって異なります。

増やしすぎるとメモリ消費量が多くなりますが、本番のTomcatは750スレッドで実行されることが知られています。こちらもご覧ください。http://java-monitor.com/forum/showthread.php?t=235

実際にSEVEREエラーが発生しましたか?Tomcat 6.0.20でテストしましたが、maxThreadsを超えるとINFOメッセージがスローされます。

INFO: Maximum number of threads (200) created for connector with address null and port 8080

acceptCount値を超えるまで接続を拒否しません。デフォルトは100です。

Tomcatドキュメントからhttp://tomcat.apache.org/tomcat-5.5-doc/config/http.html

可能なすべての要求処理スレッドが使用されている場合の、着信接続要求の最大キュー長。キューがいっぱいになったときに受信したリクエストはすべて拒否されます。デフォルト値は100です。

それが機能する方法は

1)同時リクエストの数が増えると、構成された最大値(maxThreads属性の値)までスレッドが作成されます。

したがって、あなたの場合、「作成されたスレッドの最大数(200)」というメッセージがこの時点で表示されます。ただし、リクエストは引き続きサービスのためにキューに入れられます。

2)さらに多くの同時要求が受信された場合、それらは構成された最大値(acceptCount属性の値)までキューに入れられます。

したがって、合計300の要求を失敗することなく受け入れることができます。(acceptCountがデフォルトで100であると仮定します)

3)この数値を超えると、リソースがそれらを処理できるようになるまで、接続拒否エラーがスローされます。

したがって、ステップ3に到達するまでは問題ないはずです。

于 2010-07-07T06:29:07.753 に答える