事象
perf-map-agent で Java のプロセスにアタッチすると "Unable to open socket file: target process not responding or HotSpot VM not loaded" というエラーが発生する。
- Java を実行する。
$ java ...
- 別セッションで perf-map-agent で実行中の Java のプロセスにアタッチする。
$ ps -ef|grep java $ java -cp attach-main.jar:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce <PID> (中略) Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
原因
Java を実行したのと別セッションで perf-map-agent を実行したため。
[root@netflow lib]# java -Xbootclasspath/a:/usr/java/jdk1.8.0_60/lib/tools.jar -jar /opt/appdyn/javaagent.jar 11692 Attaching to VM [11692] java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.singularity.ee.agent.appagent.AgentEntryPoint.main(AgentEntryPoint.java:494) Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loadedCan we please re-run in new shell prompt with same user logged in who launched the jvm process that we are trying to attach with? and see how it goes.
Solved: Attaching the Java Agent to a Running JVM Process - Community | AppDynamics
対策
Java を実行したのと同一セッションで perf-map-agent を実行する。
$ java ... & $ ps -ef|grep java $ java -cp attach-main.jar:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce <PID>