我們正在試圖剖析在生產環境中運行的遠程tomcat應用程序。問題是網絡池中的所有線程都被阻塞,這似乎阻止我們與jconsole,jmc甚至YourKit連接。當jvm運行正常時,所有這些工具都可以正常工作。通過JConsole等連接到凍結的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_75 Tomcat的版本:7.0.65
如何連接到JVM時,它是這樣的任何想法?
也許你可以試試'jstack -F'強制線程轉儲。 –
日誌中的任何內容?如何處理JVM進程的工作目錄?如果你啓用了'-XX:+ HeapDumpOnOutOfMemoryError'?有可能JVM就是這麼braindead它不能拿起電話... –
開始jstack -F stack-trace.log –
Sanj