【问题标题】:Can visualvm connect automatically via JMX to a remote process?visualvm 可以通过 JMX 自动连接到远程进程吗?
【发布时间】:2010-10-08 15:36:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: java jmx visualvm jvisualvm


    【解决方案1】:

    很遗憾,无法将随机 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 的数据)。

    【讨论】:

    • 像大多数socket调用一样,你可以设置端口为0,它会被动态选择,然后jstatd会通过...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2010-10-24
    相关资源
    最近更新 更多