我有一个 Tomcat 安装,我怀疑线程池可能会随着时间的推移而减少,因为线程没有被正确释放。当达到 maxthreads 时,我在 catalina.out 中收到一个错误,但我想每五分钟将正在使用的线程数记录到一个文件中,这样我就可以验证这个假设。谁能建议如何做到这一点?
此外,在此安装中没有 Tomcat 管理器,看来最初安装的人出于某种原因删除了管理器 webapp。我不确定管理员是否能够执行上述操作,或者我是否可以在不损坏现有安装的情况下重新安装它?我真正想做的就是跟踪线程池。
此外,我注意到 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 需要它。
原文由 Alex P 发布,翻译遵循 CC BY-SA 4.0 许可协议
直接 JMX 访问
尝试将此添加到
catalina.sh
/bat
:更新: Alex P 建议在某些情况下可能还需要以下设置:
这会在端口 5005 上启用远程匿名 JMX 连接。您也可以考虑 JVisualVM,它更受欢迎,允许通过插件浏览 JMX。
您正在寻找的是
Catalina
->ThreadPool
->http-bio-8080
-> 各种有趣的指标。JMX 代理 servlet
更简单的方法可能是在以下位置使用 Tomcat 的 JMX 代理 servlet : http://localhost:8080/manager/jmxproxy 。例如试试这个查询:
一点点
grep
ping 和脚本,您就可以轻松地远程监控您的应用程序。请注意tomcat:tomcat
是在conf/tomcat-users.xml
中具有manager-jmx
角色的用户的用户名/密码。