无法使用 VisualVM 连接到 Tomcat

2022-09-03 09:56:52

我在监视远程 Tomcat 进程时遇到问题。我正在尝试使用Java 6版本的JConsole / JVisualVM

我已经在具有适当安全策略的远程服务器上运行的jstatd。该过程已启动,TCP 连接可用。

当我尝试通过JConsole连接时,我得到.'Connection Failed:jmxrmi'

当我尝试通过 VisualVM 进行连接时,我会添加主机名,右键单击选项是“添加 JMX 连接”。从文档中我不清楚这是否是我期望看到的。当我尝试连接时,我得到:

'Cannot connect using service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi'.

因此,文档建议我只需要远程运行jstatd即可在VisualVM中进行监视,而UI则要求jmxrmi。这些是一样的吗?我尝试过使用jmx rmi选项设置tomcat,但我也超时了,尽管我知道这不是防火墙问题。

如果有人成功地以这种方式附加了一个远程Tomcat进程,并且可以描述如何连接,那将对我有很大的帮助。


答案 1

通常,您需要确保在JAVA_OPTS中指定服务器的 IP 地址。否则,JMX似乎将向客户端发送回指令以在其他端口上重新连接到服务器,如果它没有提供给客户端的IP地址,则连接失败。

其论据是:

-Djava.rmi.server.hostname=1.2.3.4

您可以在设置过程的演中找到更多详细信息。


答案 2

您需要启用 Tomcat VM 的管理扩展。通常这意味着传入类似如下的内容:

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

当然,如果您以上述方式执行此操作,请确保您的Tomcat在互联网上不可见,或者端口被防火墙阻止远程访问,或者采取类似的安全措施以避免端口被扫描和破坏。否则,请使用身份验证选项。


推荐