天天看點

利用jvisualvm分析JVM,進行性能調優

什麼是jvisualvm?

jvisualvm是JDK自帶分析工具。

可分析JDK1.6及其以上版本的JVM運作時的JVM參數、系統參數、堆棧、CPU使用等資訊。可分析本地應用及遠端應用。

在JDK1.6以上版本中自帶。

工具在哪找?

在jdk包中:%JAVA_HOME%binjvisualvm.exe

怎麼用?

1.進入JVM程序

進入工具後,在工具左側即可選中目前運作的JAVA程序,輕按兩下可檢視程序詳情。

利用jvisualvm分析JVM,進行性能調優

2.檢視運作環境及JVM參數

利用jvisualvm分析JVM,進行性能調優

3.檢視JVM垃圾回收、程序等

主要是為了檢視垃圾回收次數,頻繁的垃圾回收對系統性能也有影響。

利用jvisualvm分析JVM,進行性能調優

4.分析應用性能

利用這個工具分析應用性能效果杠杠的,主要是利用抽樣器統計每個線程中,每個方法的執行時間,這樣就能看到一次請求過程中,到底是哪個方法/查詢導緻響應時間長。

4.1點開抽樣器,點選CPU,進行CPU抽樣

利用jvisualvm分析JVM,進行性能調優

4.2抽樣一段時間後,點選快照,對從點選抽樣開始的這段時間,進行CPU使用的統計。

利用jvisualvm分析JVM,進行性能調優

4.3然後就能看到這段時間裡,每個方法被使用的總時間以及時間占比啦,調用堆棧可一直追蹤至native方法。

這樣就可以很輕松的分析出,到底是哪個方法占了我寶貴的時間!

利用jvisualvm分析JVM,進行性能調優

5.分析遠端應用

如果要分析遠端應用,需要遠端服務暴露JMX服務,然後本地再用該工具進行連接配接。是以需要對遠端服務的JVM啟動參數進行配置。

5.1在JVM啟動參數中增加JMX配置:

#建立連結的端口
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8090"
#不啟用ssl
JAVA_OPTS="-Dcom.sun.management.jmxremote.ssl=false $JAVA_OPTS"
#不啟用登陸驗證
JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
#rmiServer
JAVA_OPTS="-Djava.rmi.server.hostname=10.137.126.42 $JAVA_OPTS"

#啟動指令
java $JAVA_OPTS -jar jarName.jar  >/dev/null 2>&1 &           

5.2注意伺服器開放端口

遠端服務啟動後,除配置端口外,還會開放兩個随機端口,本地服務還會通路這兩個随機端口,是以在有網絡權限限制的時候,需要把本地 -> 伺服器高位端口(10000-65535) 都申請允許通路。

利用jvisualvm分析JVM,進行性能調優

5.3最後本地遠端添加主機,建立JMX連結即可。

利用jvisualvm分析JVM,進行性能調優