Tomcat 线程增加但从未减少

Tomcat 线程增加但从未减少

我们正在使用 new relic 来监控 tomcat 线程。图表显示线程数在增加,但即使应用程序处于空闲状态,线程数也从未减少。我们注意到,当线程数增加时,CPU 也会增加,而当应用程序处于空闲状态时,CPU 会减少。但 tomcat 线程数并没有减少。这是预料之中的吗?还是如何增加线程数?

答案1

要回答你的问题,这取决于你如何配置 Tomcat。它将使用线程池来处理你的请求,并且该池可以缩小。请参阅执行者目的。

如果您不使用执行器,而是依赖于连接器创建的默认池,那么您的控制力就会减弱。您可以设置 minSpareThreads,但不能设置 maxIdleTime。如果您不使用执行器,切换很容易。只需在您的配置(即 server.xml)中创建一个执行器,并在连接器上设置执行器属性即可。默认的 server.xml 有一个例子,尽管它已被注释掉。

除此之外,值得一提的是,JVM 中的其他东西也可以创建线程。我不知道你具体监控的是什么,是 JVM 中的所有线程还是 Tomcat 用来处理请求的线程,但你的应用程序和这些应用程序使用的库可能是导致问题的原因。如果你看到线程无限增长,你应该采取一些措施线程转储并查看正在创建的线程。创建这些线程的可能不是 Tomcat。

相关内容