我有一个 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 需要它。
尝试将其添加到 /:catalina.sh
bat
-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。
你正在寻找的是 -> -> ->各种有趣的指标。Catalina
ThreadPool
http-bio-8080
更简单的方法可能是在以下情况下使用 Tomcat 的 JMX 代理 servlet:http://localhost:8080/manager/jmxproxy。例如,尝试以下查询:
$ curl --user tomcat:tomcat http://localhost:8080/manager/jmxproxy?qry=Catalina:name=%22http-bio-8080%22,type=ThreadPool
只需执行一些 ping 和脚本编写,你就可以轻松远程监控你的应用程序。请注意,这是在 中具有角色的用户的用户名/密码。grep
tomcat:tomcat
manager-jmx
conf/tomcat-users.xml
谢谢托马斯,我会试一试。我认为我无法使用代理 servlet,因为它在管理器下,不幸的是,由于某种原因似乎已从安装中删除 - 管理员目录存在,但管理器不存在。
我尝试如上所述使用 curl/jmxproxy 但它只给出了 404,所以我认为管理器很无聊,我将尝试按照上面建议的显式端口启用 JMX,看看这是否有效。感谢大家的帮助!