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

Joe*_*ney 11 java jmx visualvm jvisualvm

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

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

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

Tom*_*rka 13

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

-Dcom.sun.management.jmxremote.port=<fixed port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Run Code Online (Sandbox Code Playgroud)

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