我必须在作为服务运行的 tomcat 中创建 Web 应用程序的线程转储,而无需重新启动 tomcat。我尝试附加 jconsole、jvisualvm、jstack,但没有成功。
- Tomcat 未启用 jmx 远程。 (但无法引入属性——无法重启)
- 我尝试从与服务相同的用户执行应用程序,更改 TEMP、TMP 文件夹
- 我想在本地执行它 - 在与 tomcat 相同的服务器上,因为不需要配置(因此不需要重新启动)(“注意:仅当您要远程监视 Tomcat 时才需要此配置。如果您将使用运行 Tomcat 的同一个用户在本地监控它。”)
- 在 jConsole 进程中显示为灰色,有时不可见 - 无法附加它
- 在 jStack 中:内存不足或附加权限不足
- Tomcat 在 Windows 机器上运行
有什么想法吗?
最佳答案
我会推荐 jcmd,但我认为它与 jstat 和其他工具在本地附加方面存在相同的问题。
根据以下两个谷歌命中,“psexec -s jstack PID”似乎是一个解决方案 (我没试过)
https://www.assetbank.co.uk/support/documentation/knowledge-base/how-to-take-a-java-thread-dump/ https://access.redhat.com/solutions/19170
关于tomcat - 在不重启 tomcat 的情况下获取应用程序的线程转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174206/