Java jcmd 报 AttachNotSupportedException: Unable to open socket file
Java jcmd jhsdb About 935 words错误信息
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file /proc/1/root/tmp/.java_pid1: target process 1 doesn't respond within 10500ms or HotSpot VM not loaded
at jdk.attach/sun.tools.attach.VirtualMachineImpl.<init>(VirtualMachineImpl.java:105)
at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:58)
at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
at jdk.jcmd/sun.tools.jcmd.JCmd.executeCommandForPid(JCmd.java:113)
at jdk.jcmd/sun.tools.jcmd.JCmd.main(JCmd.java:97)
关于 /tmp/.java_pid1
Java服务启动后会在/tmp目录下创建一个Socket文件,以.java_pid{pid}命名。
如:Java运行的进程id为1,则文件名为.java_pid1。
问题原因
可能原因如下:
/tmp目录的读写权限问题。/tmp被删除,或不存在/tmp/hsperfdata_{username}/{pid}文件。/tmp目录超过10天或更长时间未读写,Linux会自动删除该目录。
解决
方法一
添加启动参数-XX:+StartAttachListener(需要重启)
方法二
使用jhsdb jmap命令attach到该进程,虽然可能会报错,但会生成/tmp/.java_pid1文件。
Views: 3,334 · Posted: 2023-06-29
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...