我搜索并搜索过,希望有人可以帮我解决这个问题。
目前,我们在本地Windows 2008 Server上运行Apache Tomcat服务器。有时Tomcat会锁定并导致网站无法响应。
我们有监控(C#控制台应用程序)来自动进入并关闭Apache Tomcat服务然后重新打开它。这实际上解决了这个问题。
但是,编程组要求我们在重新启动服务之前实际获取Apache Tomcat线程转储。
所以问题是 - 如何通过命令提示符或通过C#获取apache tomcat线程转储,这样我就可以将线程保存到文件中。
答案 0 :(得分:1)
使用以下参数启动Tomcat:
-Dcom.sun.management.jmxremote.port=<some free port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
启动Tomcat后,您可以轻松地使用jconsole或其他工具来转储它。
或者,如果您只想使用命令提示符,请使用以下命令,但为此您需要使用JDK:
jps (it will give you the process id)
现在,您可以使用jstack为该特定进程进行转储。
jstack process_id >> tomcat_dump.log