1

我正在尝试使用 VisualVM 来分析在 EC2 中运行的应用程序。VisualVM 连接到远程机器,并会向我显示 Overview、Monitor 和 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。

不知道还有什么可以尝试的。

4

2 回答 2

1

您使用 SSL 身份验证吗?如果不想使用,请尝试更换

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

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

于 2013-06-21T12:16:40.237 回答
0

布莱恩,

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

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

然后在 jvisualvm 中,转到 Tools --> Options --> Network 并选择 Manual proxy settings 并在下面输入:

Socks Proxy:  localhost  Port: 9010

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

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

于 2015-01-12T15:20:40.540 回答