用jconsole等连接到冻结的jvm

k3fezbri  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(368)

我们正在尝试分析一个在生产环境中运行的远程tomcat应用程序。问题是web池中的所有线程都被阻塞了,这似乎阻止了我们与jconsole、jmc甚至yourkit的连接。当jvm运行正常时,所有这些工具都可以正常工作。
jconsole的错误是超时:

Could not connect to server1:9090 : Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
java.net.SocketTimeoutException: Read timed out]
Could not connect to server1:9090. Make sure the JVM is running and that you are using the correct protocol in the Service URL (service:jmx:rmi:///jndi/rmi://server1:9090/jmxrmi).

这使得我们很难找出我们的应用程序有什么问题。服务器没有使用太多cpu,并且有可用内存。所以没有明显的资源短缺。jvm似乎死了
java版本:jdk1.7.0\U 75 tomcat版本:7.0.65
在这种情况下,有没有关于如何连接到jvm的想法?

nfg76nw0

nfg76nw01#

你有几个选择:
发送sigquit(linux)或controlbreak(windows)并获取堆栈跟踪。
获得一个核心转储(linux上的gcore),然后您就可以使用jvm工具,比如jstack和使用核心文件的朋友

相关问题