簡體   English   中英

如何使用VisualVM和JMX?

[英]How to use VisualVM and JMX?

我已經嘗試了書中的每一個食譜,但今天的事情根本不適用......

我正在嘗試使用VisualVM來配置我在遠程服務器上運行的Java應用程序,所以我用Google搜索並用Google搜索並搜索了這樣做的方法,我最終得到了這個解決方案:

java -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=9199 \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -jar bin/felix.jar

運行這個會讓我JMX運行我猜,所以我可以看到他在9199運行:

java      21947        root    9u  IPv6 1811434      0t0  TCP *:7192 (LISTEN)
java      26376        root   14u  IPv6 1844518      0t0  TCP *:9199 (LISTEN)

此外,我可以測試該端口在Web上是否可見:

在此輸入圖像描述

現在,當我嘗試在我的機器中打開VisualVM中的連接(也可以ping jmx服務器)時,會發生這種情況:

在此輸入圖像描述

在此輸入圖像描述

在此輸入圖像描述

我一定是如此愚蠢,以至於這個世界上的每個人都能把這個東西運轉起來但是我。 該死的...

編輯:我安裝了wireshark來了解引擎蓋下發生了什么,所以我看到了這個。 一旦我在VisualVM中添加遠程IP,wireshark就開始檢測這個重復的活動:

在此輸入圖像描述

但是,如果我嘗試添加新的JMX連接並要求他連接,則wireshark甚至不會抓取該連接嘗試的單個數據包。

在此輸入圖像描述

在我看來VisualVM甚至沒有嘗試連接,盡管給出錯誤消息“無法連接”...... !! 這到底是怎么回事?

使用以下選項啟動您的服務:

-Djava.rmi.server.hostname=193.163.XXX.XXX
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9199 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false

然后你可以使用jvisualvm或jconsole只有“193.163.XXX.XXX:9199”地址。

請按照以下步驟操作。
1)轉到遠程機器打開X11轉發,
2)在Windows中安裝XMING
3)在遠程機器中啟動可視VM,GUI將進入你的windows xming。
4)而不是IP使用localhost並使用相同的端口號。

如果上述步驟不起作用,則表示配置有問題。
如果上面的步驟工作正常,那么去iptables並確保端口9199對外部世界開放。 以及使用java -Djava.rmi.server.hostname=YOUR_IP啟動程序

有關詳細信息,請參閱此鏈接

請使用以下JVM選項:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=<PORT> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<IP>

在VisualVM中使用以下連接:

service:jmx:rmi:///jndi/rmi:/<IP>:<PORT>/jmxrmi

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM