使用 VisualVM,我可以看到有两种类型可以连接远程主机。
jstatd
JMX
所以我尝试使用JMX,我遵循了很多教程,但到目前为止没有运气。
目前,我的桌面和一台运行着 java 服务器应用程序的 Linux 机器。 我正在尝试在桌面上设置 VisualVM 客户端以查看在 Linux 机器上运行的 java 应用程序。
我在 Linux 上的 java 应用程序的 start.sh 脚本中添加了以下 JAVA_OPTS 脚本。
JMX_PORT="-Dcom.sun.management.jmxremote.port=33333" <-- allowed on firewall
JMX_SSL="-Dcom.sun.management.jmxremote.ssl=false"
JMX_AUTH="-Dcom.sun.management.jmxremote.authenticate=false"
JMX_IP="-Djava.rmi.server.hostname=xx.xx.xx.xx" <-- where linux box NAT ip.
Linux 上的 Java 应用程序已成功启动,并添加了 jmx 选项 start.sh,我想是因为没有错误或警告。
当我尝试添加 JMX 连接时,它说无法连接到它。
我检查了 33333 是否被阻止,事实并非如此,我能够从桌面使用 telnet 连接到该 IP 的端口。
我还应该为 VisualVM 打开任何其他端口吗?
要使用 JMX,是否需要进行任何其他设置,例如 RMI 注册表服务器或 jstatd 策略文件创建并启动 jstat 守护进程?我认为它仅用于 jstatd 连接,因此我没有继续该教程。
最佳答案
最简单的方法是在服务器和桌面之间使用 openvpn 隧道,而不是摆脱防火墙和 NAT 的东西。我就是这样做的,效果非常好。
关于java - 无法连接到远程 JMX 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20627673/