我们正在尝试分析一个在生产环境中运行的远程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的想法?
1条答案
按热度按时间nfg76nw01#
你有几个选择:
发送sigquit(linux)或controlbreak(windows)并获取堆栈跟踪。
获得一个核心转储(linux上的gcore),然后您就可以使用jvm工具,比如jstack和使用核心文件的朋友