9

我在亚马逊云中的 Linux 服务器上运行 Tomcat 6。我正在尝试通过我办公室的 Mac 上的 VisualVM 连接到它。我已经允许打开我的桌面和服务器之间的所有 TCP 端口,但我无法让 VisualVM 做任何事情。

在 linux 机器上,我启动了 Tomcat:

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

在我的 Mac 上,我启动 VisualVM 并选择 File -> New JMX Connection...

我在框中输入 amazonhostname.com:9191。它说“正在添加 amazonhostname.com:9191 ...”并在超时前坐在那里几分钟。

在我的 Mac 上,我可以“telnet amazonhostname.com 9191”就好了,我尝试了其他一些随机端口,它们都可以正常工作。我很确信这不是防火墙问题,除非我需要打开 UDP 或 ICMP 或类似的东西。(真的??)

服务器上的 catalina.log 或我的 Mac 上的系统控制台中没有任何与 jmx 相关的内容。服务器上的 netstat 显示 9191 和所有接口上打开的其他一些端口。

远程服务器上没有 jstatd。这是 JMX 的先决条件吗?(我对 Java 完全陌生,我什至不确定这些东西是什么意思,但我在某处的博客文章中看到了它。我现在正抓着稻草。)

4

2 回答 2

20

在 VM 启动之前设置主机名属性:

java -Dcom.sun.management.jmxremote \
     -Dcom.sun.management.jmxremote.port=9191 \
     -Dcom.sun.management.jmxremote.authenticate=false \
     -Dcom.sun.management.jmxremote.ssl=false \
     -Djava.rmi.server.hostname=the.public.ip \
     -jar program.jar

将相关规则添加到您的安全组。

于 2012-05-29T10:47:12.567 回答
0

在 RHEL7 环境中对我有用的是使用文档中提供的示例在 Tomcat 上实现 JmxRemoteLifecycleListener。我还在防火墙上开放了 10001 和 10002 端口。 JMX 远程生命周期监听器

于 2020-02-14T18:48:48.307 回答