系統優化怎麼做-JVM優化之VisualVM
阿新 • • 發佈:2018-12-10
前言
在上一期主要講到JVM優化的概念及經驗。這一節章節去講述相關工具的基本使用。
VisualVM
JDK自帶,VisualVM 是一款免費的,集成了多個 JDK 命令列工具的視覺化工具,它能為您提供強大的分析能力,對 Java 應用程式做效能分析和調優。這些功能包括生成和分析海量資料、跟蹤記憶體洩漏、監控垃圾回收器、執行記憶體和 CPU 分析,同時它還支援在 MBeans 上進行瀏覽和操作。
Tomcat JMX配置
- 調整/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=jj.xx.yy.zz -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
- 替換其中的IP jj.xx.yy.zz 地址
- 配置{jdk_path}/jre/lib/management/jmxremote.password
- 直接複製jmxremote.password.template, 修改預設訪問密碼
- 設定訪問屬性
chmod +w jmxremote.password chmod 0400 jmxremote.password
概述介面
主要資訊
- 主機及埠
- jvm引數資訊
監視介面
主要資訊
-
cpu指標
如cpu是多核,如果是n核,這裡顯示的單核平均佔用在通過top命令,看到的是 乘上n的結果,VisualVM顯示 10.2/4(核數) =2.5%
- 類載入數量
- 堆及PerGen的大小
- 類載入數量
- 執行緒數
操作
- 執行垃圾回收
- 堆Dump
執行緒介面
主要資訊
- 實時及守護執行緒數
- 執行緒狀態 執行,休眠, 等待, 駐留, 監視
抽樣器介面
CPU監控
- 哪些方法是熱點方法
- 各個方法佔用CPU時間及其比例
記憶體監控
- 每個執行緒分配記憶體
VisualVM常用外掛
安裝外掛
- 工具->外掛
- 檢查新版本
需要配置url,不然會報以下出錯
- 在外掛->設定頁面填入合適的
填入URL地址,確定
配置成功後,在可用外掛列表
常用外掛
- Visual GC
- Jstatd Threads
- Inspector Tracer
- Jvmstate
- Collection
- Jvm Probes
重要外掛
VIsual GC
檢視服務GC狀態,需要配置jstatd並啟動
cd /usr/local/src/jdk1.8.0_131/bin/
vim jstatd.all.policy
加入以下程式碼
grant codebase "file:${java.home}/../lib/tools.jar"
{ permission java.security.AllPermission; };
如果沒有配置{java.home},填寫jdk的絕對路徑也可行在jdk.home/bin下啟動
./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=ip.xx.yy.zz -J-Djava.rmi.server.logCalls=true
更改以上Ip ip.xx.yy.zz地址 指定服務的埠號,使用預設埠1099。確認1099沒有防火牆攔截
配置jstated連線VisualGC介面
注意點:
記憶體大小分情況主要關注 GC Time長短及間隔
Tracer
可以查詢Heap,PerGen,Classes, Threads
如圖
Tracer可以監控很多專案
- Heap
- PerGen
- Cleass
- Treads
- 等等
利用VisualVm檢查full GC
- VisualGC檢視是否old Gen,Eden是否存在持續上升
- Mbean檢視
-
利用sampler的分析記憶體採集,確定問題程式碼
記憶體檢視,檢視當前哪些業務物件比較多,並存在一直遞增的趨勢執行緒檢視,檢視哪些執行緒分配的記憶體最多
IntelliJ Idea整合VisualVm
- File ->Setting->Plugins->Browsers Repositrories
- 搜尋VisualVM Launcher
- 安裝, 重啟Idea
- 預設Run及Debug旁邊,會出現Run With VisulaVm及DebugWith VisulaVm的按鈕
方便本地壓測監控JVM情況
總結
本節主要講解VisualVm的使用以及常用外掛的使用,好的工具對於找到問題有事半功倍的效果。在實踐中理解理論知識。