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


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

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

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


5360
2017-10-08 15:36


起源



答案:


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

-Dcom.sun.management.jmxremote.port=<fixed port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

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


13
2017-12-16 12:18



像大多数套接字调用一样,你可以将端口设置为0,它将被动态选取,然后jstatd将连接你... - time4tea


答案:


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

-Dcom.sun.management.jmxremote.port=<fixed port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

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


13
2017-12-16 12:18



像大多数套接字调用一样,你可以将端口设置为0,它将被动态选取,然后jstatd将连接你... - time4tea