我尝试使用带有JRE 1.8.0的VisualVM 1.3.8连接到远程JMX服务。与JConsole完全相同的连接可以很好地工作,但是在VVM上使用相同参数的尝试只是在“添加服务”中。阶段。我查看了VVM日志,但实际上没有任何记录。
我还在VVM远程JMX doc上阅读了here:
注意:要检索和显示有关在远程主机上运行的应用程序的信息,需要在远程主机上运行jstatd实用程序。
这让我很困惑,因为我可以使用JConsole建立远程JMX连接,据我所知,jstatd没有在远程上运行。
是否有人知道jstatd仅将VEM 的需求作为远程JMX客户端?由于可以在同一客户端和服务器端点之间使用JConsole建立JMX连接,因此网络/防火墙等没有问题。
除此之外,我真的很困惑在哪里寻找线索?
答案 0 :(得分:1)
当我从Java 7切换到8时,我遇到了同样的问题,同时使用SOCKS我通过VisualVM -> Tools -> Plugins -> Settings -> Proxy Settings
更新代理设置。但是,我成功地完成了以下任务:
-Dcom.sun.management.jmxremote.port=<JMX_PORT>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
请注意,您显然可以执行更安全的操作,包括SSL和身份验证。
ssh -D<SOCKS_PORT> -vvv -N <REMOTE_HOST>
jconsole -J-DsocksProxyHost=localhost -J-DsocksProxyPort=<SOCKS_PORT> service:jmx:rmi:///jndi/rmi://<REMOTE_HOST:JMX_PORT>/jmxrmi
jvisualvm -J-DsocksProxyHost=localhost -J-DsocksProxyPort=<SOCKS_PORT> --openjmx <REMOTE_HOST>