web-dev-qa-db-ja.com

Tomcatスレッドプールのスレッド数を増やす方法は?

tomcatスレッドプールのスレッド数を増やす方法を知りたいだけです。また、最大値を設定する数も、私は何が適切か分かりませんか?

17
Mahmoud Saleh

デフォルトのままにしておくように聞こえます;-)

真剣に:設定する必要がある最大並列接続の数は、Tomcatの予想使用量と、サーバー上のコアの数によって異なります。プロセッサのコア数が多いほど、実行可能な並列スレッドが多くなります。

設定方法はこちらをご覧ください...

Tomcat 9: https://Tomcat.Apache.org/Tomcat-9.0-doc/config/executor.html

Tomcat 8: https://Tomcat.Apache.org/Tomcat-8.0-doc/config/executor.html

Tomcat 7: https://Tomcat.Apache.org/Tomcat-7.0-doc/config/executor.html

Tomcat 6: https://Tomcat.Apache.org/Tomcat-6.0-doc/config/executor.html

21
alfonx

環境に合わせて調整する必要があります。

スレッドの最大数ではなく、バックログのサイズ(acceptCount)を増やす方が便利な場合があります。

と言う代わりに

<Connector ... maxThreads="500" acceptCount="50"

あなたが使う

<Connector ... maxThreads="300" acceptCount="150"

場合によってはパフォーマンスが大幅に向上します。これは、リソースを争うスレッドが少なくなり、バックログキューがより速く消費されるためです。

いずれにせよ、何がベストかを本当に知るには、いくつかのベンチマークを実行する必要があります。

24
Elias Dorneles

Tomcatドキュメント から

maxConnectionsこの数に達すると、サーバーはさらに1つの接続を受け入れますが、処理はしません。制限に達しても、オペレーティングシステムはacceptCount設定に基づいて接続を受け入れることがあります。 (すべての可能な要求処理スレッドが使用中の場合の着信接続要求の最大キュー長。キューがいっぱいのときに受信した要求は拒否されます。デフォルト値は100です。)BIOの場合、デフォルトは、executor以外のmaxThreadsの値ですこの場合、デフォルトはエグゼキューターからのmaxThreadsの値になります。 NIOおよびNIO2の場合、デフォルトは10000です。APR/ nativeの場合、デフォルトは8192です。WindowsのAPR/nativeの場合、設定値は1024の最大倍数であるmaxConnections以下になります。これはパフォーマンス上の理由で行われます。

maxThreads
このコネクタによって作成されるリクエスト処理スレッドの最大数。したがって、処理可能な同時リクエストの最大数が決まります。指定しない場合、この属性は200に設定されます。executorがこのコネクタに関連付けられている場合、コネクタは内部スレッドプールではなくexecutorを使用してタスクを実行するため、この属性は無視されます。

13
Sagar Mhatre