web-dev-qa-db-ja.com

Tomcatスレッドは増加しているが、減少していない

Tomcatスレッドを監視するためにnew relicを使用しています。グラフはスレッド数の増加を示していますが、アプリケーションがアイドル状態であっても減少することはありません。アプリケーションがアイドル状態の場合、CPUが増加するとCPUも増加し、CPUが減少することに気付きました。ただし、Tomcatスレッドは削減されません。それは期待されていますか、それともスレッドカウントをもたらす方法ですか?

2
Selvakumar P

あなたの質問に答えるために、それはTomcatをどのように設定したかに依存します。スレッドのプールを使用してリクエストを処理し、そのプールは縮小できます。 Executor オブジェクトのminSpareThreadsとmaxIdleTimeを参照してください。

エグゼキューターを使用せず、コネクターによって作成されたデフォルトのプールに依存している場合は、制御が弱くなります。 minSpareThreadsは設定できますが、maxIdleTimeは設定できません。エグゼキューターを使用していない場合、切り替えは簡単です。構成(server.xmlなど)に1つ作成し、コネクターにexecutor属性を設定するだけです。 デフォルトのserver.xmlには例があります ですが、コメント化されています。

それ以外にも、JVMの他のものがスレッドを作成している可能性があることに言及する価値があります。何を監視しているのか具体的にはわかりません。JVM内のすべてのスレッドなのか、Tomcatがリクエストの処理に使用しているスレッドだけなのかはわかりませんが、それらのアプリケーションで使用されているアプリケーションとライブラリが問題の原因である可能性があります。無制限のスレッドの増加が見られる場合は、いくつかの スレッドダンプ を取得して、作成されているスレッドを正確に確認する必要があります。これらのスレッドを作成しているのはTomcatではない可能性があります。

2
Daniel Mikusa