我有一个在远程计算机上运行的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=<fixed port>
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
并且VisualVM将能够通过读取此配置 Jvmstat (由jstatd提供)并自动打开与远程应用程序的JMX连接。因此,您需要将固定端口分配给远程应用程序。一旦你拥有它,一切都会正常工作,VisualVM将通过JMX自动连接到你的应用程序(实际上它将结合来自两者的数据) Jvmstat 和JMX)。
遗憾的是,无法将随机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)。