###前言 Java VisualVM是jdk自帶一款工具,可以十分友好的監控java進程相關的應用服務及中間件。
工具位置
jdk的bin目錄下,找到jvisualvm.exe,雙擊打開即可。
功能介紹
1、抽樣器和profiler,這兩個差不多,用其中一個即可。
比如抽樣器,點擊CPU,就可以看到各個類以及方法執行的時間,可以監控哪個類的方法執行時間較長,一眼就能定位到具體的異常方法。
點擊內存,也一樣,很直觀的就能找到哪個位置可能存在內存泄漏的情況。
2、安裝visualGC插件
直接在java visualVM上安裝是安裝不上的,要去官網下載插件。
地址:https://visualvm.github.io/pluginscenters.html
java -version查一下java版本,然后根據版本下載對應的插件。
然后點擊工具-插件,將地址改為正確的地址:
然后就可以安裝插件了,勾選可用插件中的這兩個:BTrace Workbench和Visual GC
點擊安裝即可。
裝完后:
3、JVisualVM監控tomcat(在第2點的基礎上)
1)、配置要監控的遠程tomcat中的catalina.sh文件,加入以下部分:
找到JAVA_OPTS,在上方加入:(主要是端口port和主機hostname,記住端口不要和服務器上已經占用的發生沖突,如果是雲服務器要開放端口。)
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=39.108.70.86"
保存,重啟。
2)、遠程-右鍵,添加主機:
添加jmx連接:
然后就和監控本地一樣了!
總結:
個人經過測試,監控內網服務器沒問題,但是阿里雲服務器遠程連接會報錯:【無法使用 service:jmx:rmi:///jndi/rmi:///jmxrmi 連接到9004】,這是因為雲服務器自己的安全策略阻擋了遠程監控,所以VisualVM最好的使用場景是遠程監控局域網內的服務器。