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运行的进程id1,则文件名为.java_pid1

问题原因

可能原因如下:

  • /tmp目录的读写权限问题。
  • /tmp被删除,或不存在/tmp/hsperfdata_{username}/{pid}文件。
  • /tmp目录超过10天或更长时间未读写,Linux会自动删除该目录。

解决

方法一

添加启动参数-XX:+StartAttachListener(需要重启)

方法二

使用jhsdb jmap命令attach到该进程,虽然可能会报错,但会生成/tmp/.java_pid1文件。

Views: 1,668 · Posted: 2023-06-29

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Today On History
Browsing Refresh