Warm tip: This article is reproduced from serverfault.com, please click

java-如何监控/记录 Tomcat 的线程池?

(java - How can I monitor/log Tomcat's thread pool?)

发布于 2011-09-07 12:16:01

我有一个 Tomcat 安装,我怀疑线程池可能会随着时间的推移而减少,因为线程没有正确释放。当达到maxthreads时,我在catalina.out中收到错误,但我想每五分钟将正在使用的线程数记录到文件中,以便我可以验证这个假设。有人可以建议如何做到这一点吗?

同样在此安装中,没有Tomcat管理器,似乎无论谁进行原始安装,都出于某种原因删除了管理器Web应用程序。我不确定管理器是否能够执行上述操作,或者我是否可以重新安装它而不会损坏现有安装?我真正想做的是跟踪线程池。

另外,我注意到Tomcat的最大线程数是200,但Apache的最大并发连接数较低(Apache使用mod_proxy和mod_proxy_ajp(AJP 1.3)来提供Tomcat)。这似乎也是错误的,这些数字之间的正确关系是什么?

任何帮助非常感谢:D

更新:只是一个快速更新,说直接JMX访问有效。但是,我还必须设置Dcom.sun.management.jmxremote.host。我将其设置为本地主机并且它起作用了,但是没有它就没有骰子。如果其他人在尝试启用 JMX 时遇到类似的问题,我建议你也设置此值,即使你是从本地计算机连接。似乎某些版本的 Tomcat 需要它。


只是一个快速更新,说直接JMX访问有效。但是,我还必须设置Dcom.sun.management.jmxremote.host。我将其设置为本地主机并且它起作用了,但是没有它就没有骰子。如果其他人在尝试启用 JMX 时遇到类似的问题,我建议你也设置此值,即使你是从本地计算机连接。似乎某些版本的 Tomcat 需要它。

Questioner
Alex P
Viewed
0
Tomasz Nurkiewicz 2011-09-19 00:33:05

直接访问 JMX

尝试将其添加到 /:catalina.shbat

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=5005
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

更新:Alex P 建议在某些情况下可能还需要以下设置:

-Dcom.sun.management.jmxremote.host=localhost

这将在端口 5005 上启用远程匿名 JMX 连接。你也可以考虑JVisualVM,它更令人满意,并允许通过插件浏览JMX。

你正在寻找的是 -> -> ->各种有趣的指标。CatalinaThreadPoolhttp-bio-8080

JMX proxy servlet

更简单的方法可能是在以下情况下使用 Tomcat 的 JMX 代理 servlethttp://localhost:8080/manager/jmxproxy。例如,尝试以下查询:

$ curl --user tomcat:tomcat http://localhost:8080/manager/jmxproxy?qry=Catalina:name=%22http-bio-8080%22,type=ThreadPool

只需执行一些 ping 和脚本编写,你就可以轻松远程监控你的应用程序。请注意,这是在 中具有角色的用户的用户名/密码。greptomcat:tomcatmanager-jmxconf/tomcat-users.xml