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