我在Amazon EC2实例上运行的一项服务上设置了JMX,但它无法正常运行。我正在使用VisualVM进行连接,经过短暂的等待后,它因超时而失败。似乎由于缺少响应数据或滞后而导致失败。我检查了是否在安全组中启用了JMX端口,并尝试使用未启用JMX的其他端口以及在安全组设置中未启用的端口,并且两者均立即失败,因此外观有所不同。我的EC2实例和 table 面都安装了Ubuntu 12.04和JDK 7。
事实证明,由于连接受SSL保护,所以端口没有意义。我有一个私钥,不知道如何在JConsole或VisualVM中使用它。
最佳答案
这对我有用。在服务器上设置JMX选项:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<some port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=localhost
打开SSH隧道:
ssh -i /path/to/key -D <some port> username@public_dns_address
启动VisualVM:
jvisualvm -J-Dnetbeans.system_socks_proxy=localhost:<some port> -J-Djava.net.useSystemProxies=true
将远程连接添加到服务器。使用您为JMX指定的端口添加JMX连接。
需要明确的是,在上述所有三种情况下,都应使用相同的端口。
关于amazon-ec2 - 为什么与Amazon EC2的JMX连接失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130877/