JMX 连接失败,并显示“握手失败...预期的 JDWP-Handshake”

cro*_*ies 3 java jmx remote-debugging jvisualvm

我正在尝试将 VisualVM 连接到远程 JMX。IntelliJ 可以轻松连接,但 VisualVM 失败并在日志输出中显示以下内容:

Listening for transport dt_socket at address: 5005
Debugger failed to attach: recv failed during handshake: Resource temporarily unavailable
Debugger failed to attach: handshake failed - received >< - expected >JDWP-Handshake<
Run Code Online (Sandbox Code Playgroud)

这是我在运行时传递的 JVM 属性:

-XX:MaxPermSize=50g -XX:+HeapDumpOnOutOfMemoryError -Xmx50g -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=100.100.100.100 -Dcom.sun.management.jmxremote.port=5006 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Run Code Online (Sandbox Code Playgroud)

使用 VisualVM 1.3.9。不知道为什么它会失败,为什么 IntelliJ 会成功。我试过禁用 SSL 身份验证等。

Nic*_*las 7

侦听 5005 的套接字不是 JMX 侦听器,而是Java 调试线协议侦听器。因此,VisualVM 将无法连接到该端口,这就是您看到握手失败的原因。