2016-03-28 6 views
2

私たちは本番環境で稼動するリモートのTomcatアプリケーションをプロファイルしようとしています。問題は、Webプール内のすべてのスレッドがブロックされているため、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のバージョンを思わ: Tomcatのバージョンをjdk1.7.0_75:7.0.65

それはこのようなものです時にJVMに接続する方法上の任意のアイデアは?

+1

を使用することができます。 –

+0

ログには何もありませんか? JVMプロセスの作業ディレクトリはどうですか? '-XX:+ HeapDumpOnOutOfMemoryError'を有効にするとどうなりますか? JVMはちょっと頭にあり、電話を受けられない可能性があります。 –

+0

jstack -F stack-trace.logで始まる – Sanj

答えて

0

あなたはオプションのカップルがあります

  1. はSIGQUIT(Linux)またはコントロール・ブレーク(Windows)を送信し、スタックトレースを取得 。
  2. コアダンプ(Linux上のgcore)を取得し、その後、あなたはたぶん、あなたは、スレッドダンプを強制するために、 `jstack -F `試すことができますコアファイルを使用してjstackや友人などのJVM ツール
+0

ウィンドウ内でJavaプロセスを終了すると、プロンプトを返す以外の処理は行われません – Tommy

+0

SIGQUITはSIGKILL/SIGTERMとは異なり、Javaプロセスを強制終了しません。 – sunnychan77

関連する問題