2013-06-20 54 views
1

我想使用VisualVM來分析在EC2中運行的應用程序。 VisualVM連接到遠程機器並向我顯示Overview,Monitor和VisualGC選項卡(帶數據),但是當我選擇Sampler選項卡時,得到:VisualVM無法剖析;連接和其他選項卡的工作,但採樣器選項卡給出:「無法創建JMX連接」

不適用。無法創建到目標應用程序的JMX連接。使用「添加JMX連接」操作附加到應用程序。

我已經嘗試添加JMX連接(到EC2公共地址和應用程序啓動的JMX端口)無濟於事。

我可以在我設置的應用程序jmxsettings(通過擴展VisualVM的看到這些設置)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.ssl=false

+0

謝謝你,但該建議,但它仍然無法連接。我甚至能夠成功地從我的visualvm機器telnet到遠程地址和端口9010 ...所以我仍然無法理解爲什麼visualvm無法做到這一點。 –

+0

JMX協議非常複雜,並使用其他連接。嘗試添加一個系統屬性:'-Djava.rmi.server.hostname = ' –

+0

你是我的新HERO ...工作!我在你的債務。 –

0

布賴恩更換

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

您可以從當地的jvisualvm連接到EC2 JMX端口,而不開幕EC2 JMX端口。我這樣做的方式是使用SSH隧道。在本地計算機上以下命令來運行:

ssh -i <aws .pem key> [email protected]<ec2-ip> -v -D 9010 

然後在jvisualvm,去工具 - >選項 - >網絡,並選擇手動代理設置,並在下面輸入:

Socks Proxy: localhost Port: 9010 

無代理主機保持不變,然後單擊確定。

然後選擇本地主機,然後右鍵單擊添加JMX連接和輸入localhost:9010和你做:)

相關問題