VisualVM 无​​法分析;连接和其他选项卡工作,但采样器选项卡给出:“无法创建 JMX 连接”

Posted

技术标签:

【中文标题】VisualVM 无​​法分析;连接和其他选项卡工作,但采样器选项卡给出:“无法创建 JMX 连接”【英文标题】:VisualVM cannot profile; connects and other tabs work but Sampler tab gives:"Failed to create JMX connection" 【发布时间】:2013-06-20 18:48:37 【问题描述】:

我正在尝试使用 VisualVM 来分析在 EC2 中运行的应用程序。 VisualVM 连接到远程机器,并会显示概览、监视器和 VisualGC 选项卡(带有数据),但是当我选择 Sampler 选项卡时,我得到:

不可用。无法创建到目标应用程序的 JMX 连接。使用“添加 JMX 连接”操作附加到应用程序。

我尝试添加 JMX 连接(到 EC2 公共地址和启动应用程序的 JMX 端口),但无济于事。

我可以在 VisualVM 概述选项卡中看到我设置了应用程序的 jmxsettings(并且通过扩展,VisualVM 可以看到这些设置):

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false

我正在使用 EC2 安全模型,该模型将所有端口从 EC2 开放到我的本地计算机。 我在两台机器上运行完全相同的 JVM。 我已经在 EC2 机器上运行了 jstatd。

不知道还能尝试什么。

【问题讨论】:

【参考方案1】:

您使用 SSL 身份验证吗?不想用的话,换个试试吧

-Dcom.sun.management.jmxremote.local.only=false

-Dcom.sun.management.jmxremote.ssl=false

【讨论】:

谢谢您的建议,但仍然无法连接。我什至能够成功地从我的visualvm机器远程登录到远程地址和端口9010......所以我仍然不明白为什么visualvm不能做这个连接。 JMX 协议很复杂并且使用额外的连接。尝试再添加一个系统属性:-Djava.rmi.server.hostname=<IP_ADDRESS_OF_EC2_HOST>【参考方案2】:

布赖恩,

您可以从本地 jvisualvm 连接到 EC2 JMX 端口,而无需打开 EC2 JMX 端口。我这样做的方式是使用 ssh 隧道。在本地计算机上运行以下命令:

ssh -i <aws .pem key>  ec2-user@<ec2-ip> -v -D 9010

然后在 jvisualvm 中,转到工具 --> 选项 --> 网络并选择手动代理设置并在下面输入:

Socks Proxy:  localhost  Port: 9010

No Proxy Hosts 下不保留任何内容,然后单击 OK。

然后选择localhost并右键Add JMX Connection并输入localhost:9010就完成了:)

【讨论】:

以上是关于VisualVM 无​​法分析;连接和其他选项卡工作,但采样器选项卡给出:“无法创建 JMX 连接”的主要内容,如果未能解决你的问题,请参考以下文章

在 visualVM 中自动保存分析器快照

visualvm intellij“无法创建与目标应用程序的 JMX 连接”分析不起作用

Java VisualVM 中的“总时间(CPU)”是不是包含 CPU 用于执行其他进程的时间?

使用 VisualVM 进行性能分析及调优

当我打开visualvm分析器时tomcat关闭

使用 VisualVm 分析堆转储时出现内存不足错误