无法远程连接到 JMX?

2022-08-31 15:30:21

由于一些奇怪的原因,我无法使用或连接到JMX。VisualVMjconsole

用于启动要监视的 VM 的参数:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=1100

我检查了,我可以从本地和远程远程登录到此端口。

尽管如此,VisualVM或jconsole在花费了相当多的时间尝试连接后仍然无法连接。

REMOTE MACHINE with JMX (debian)
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

MY WORKSTATION (OS X)
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

问题出在哪里?


答案 1

加。即使我面临同样的问题,这也做到了。-Djava.rmi.server.hostname = host ip

添加此选项将强制 RMI 服务使用主机 IP 而不是 127.0.0.1-Djava.rmi.server.hostname = host ip


答案 2

这些是对我有用的步骤(服务器端防火墙后面的Debian是通过VPN从我的本地Mac访问的):

  1. 检查服务器公共 IP

    ifconfig

  2. 使用 JVM 参数:

    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=[jmx port]
    -Dcom.sun.management.jmxremote.local.only=false
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    -Djava.rmi.server.hostname=[server ip from step 1]
  1. 运行应用程序

  2. 查找正在运行的 Java 进程的进程 ID

  3. 检查 JMX/RMI 使用的所有端口

    netstat -lp | grep [pid from step 4]

  4. 在防火墙上打开步骤 5 中的所有端口

瞧。


推荐