對不起,這個問題必須多次提出,但我無法成功解決我的問題。 我讀過很多博客,網站,論壇......並沒有在我的案例中找到任何解決方案。VisualVM通過防火牆 - RMI故障排除
案例: 我需要將我盒子上的VisualVM連接到性能/線程/內存監控的遠程服務器(tomcats,weblogics)。 這些服務器安裝在受防火牆保護的(物理或虛擬)機器上。 大量的端口在防火牆中打開,可以使用,但不是所有的端口。
測試
- 我在VisualVM的通過JMX試圖直接連接,使用在服務器端以下JVM選項在服務器啓動時:
-Djava.rmi.server.hostname=[hostname] -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=[port] -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
我一種高精度的主機名,因爲從我的網絡來看,服務器的主機名和IP地址與遠程服務器網絡的主機名和IP地址不一樣。
沒有成功,VisualVM似乎總是搜索未知的服務器。
試圖從我的盒子一個端口進行訪問(-p選項)上開始對服務器端jstatd(此端口作品的telnet),但該主機與jstatd端口上啓動VisualVM的時候,它似乎仍然等待東西無法訪問....與jps連接到此遠程主機的行爲相同。
在服務器上使用相同的工具嘗試使用較少的網絡保護,並且工作正常。所以我已經看到了我的盒子和服務器之間的連接,它們在不同於我指定給jstatd的端口上完成。 我知道這個端口是第一次通信所需要的(類型的握手),而實際的通信是在其他端口上完成的,但是不可預測(例如:60305,55197,...)。不知道我非常瞭解RMI是如何工作的。
請幫助我,我要瘋了!
如果您使用的是Java 7 update 4,則希望標記爲''-Dcom.sun.management.jmxremote.rmi.port = 7091'' 請參閱此博文: http://hirt.se/ blog /?p = 289 – davey