visualvm可以通过JMX自动连接到远程进程吗?

我有一个在远程计算机上运行的Java进程,该进程设置了一些mbeans。 我还让jstatd在该机器上运行,与Java进程的用户相同。 (mbeans可以通过编程方式设置或使用-Dcom.sun.management.jmxremote...等,这似乎没有区别)。

VisualVM能够与进程建立jstatd连接,并自动发现,但这意味着我无法访问mbeans或CPU历史记录图表。 或者,我可以创建一个显式的JMX连接,它为我提供了通常的有用工具,但我希望应用程序在启动时分配一个随机的JMX端口,这个配置不能是静态的。

有没有办法让VisualVM通过JMX自动连接到我的进程? 这将要求它自动发现JMX端口,但我原以为jstatd可以做到这一点。 有谁知道visualvm的任何插件自动化这个?

遗憾的是,无法将随机JMX端口分配给远程应用程序。 您可以使用启动远程应用程序

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

VisualVM将能够通过Jvmstat (由jstatd提供)读取此配置,并自动打开与远程应用程序的JMX连接。 因此,您需要将固定端口分配给远程应用程序。 一旦你拥有它,一切都会正常工作,VisualVM将通过JMX自动连接到你的应用程序(实际上它将结合来自Jvmstat和JMX的数据)。