jstack / jmap コマンドを実行した際に "Unable to open socket file" というメッセージが表示されスレッドダンプ/ヒープダンプが生成できません
Environment
- Red Hat JBoss Enterprise Application Platform (EAP)
- Java
Issue
-
jstackコマンドを実行した際に"Unable to open socket file: target process not responding or HotSpot VM not loaded"というメッセージが表示されスレッドダンプが生成できません[root@myhost /tmp]# jstack -l <JAVA_PID> <JAVA_PID>: Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can be used when the target process is not responding -
jmapコマンドを実行した際に"Unable to open socket file: target process not responding or HotSpot VM not loaded"というメッセージが表示されヒープダンプが生成できません[root@myhost /tmp]# jmap -dump:format=b,file=heap.hprof <JAVA_PID> <JAVA_PID>: Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can be used when the target process is not responding
Resolution
-
jstackおよびjmapコマンドを取得対象の JBoss/Java プロセスと同じ uid/gid にて実行していることを確認してください。 -
以下の例のように JBoss/Java プロセスと同じユーザーで
jstack(およびjmap) コマンドを実行してください。-
Java プロセスの PID とユーザーを
psコマンドで確認:ps aux | grep java -
jstackコマンドを以下のように JBoss/Java ユーザーに切り替えて実行:$su - <JAVA_USER> $jstack -l <JAVA_PID>もしくは
#sudo -u <JAVA_USER> jstack -l <JAVA_PID>もしくは
#su - <JAVA_USER> -c "jstack -l <JAVA_PID>"
-
-
スレッドダンプについては別な方法として、代わりに "
kill -SIGQUIT <JAVA_PID>" もしくは "kill -3 <JAVA_PID>" による SIGQUIT シグナル送信により出力することもできます。ただし、この方法ではスレッドダンプは該当 Java プロセスの標準出力(コンソール)に出力されます。
Root Cause
jstackおよびjmapコマンドを JBoss/Java ユーザーではなく root ユーザーなど別なユーザーから実行した
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments