1. 程式人生 > >系統優化怎麼做-JVM優化之VisualVM

系統優化怎麼做-JVM優化之VisualVM

前言

在上一期主要講到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"

  1. 替換其中的IP jj.xx.yy.zz 地址
  2. 配置{jdk_path}/jre/lib/management/jmxremote.password
  3. 直接複製jmxremote.password.template, 修改預設訪問密碼
  4. 設定訪問屬性

    chmod +w jmxremote.password chmod 0400 jmxremote.password

概述介面

圖片描述

主要資訊

  1. 主機及埠
  2. jvm引數資訊

監視介面

圖片描述

主要資訊

  • cpu指標

    如cpu是多核,如果是n核,這裡顯示的單核平均佔用在通過top命令,看到的是 乘上n的結果,VisualVM顯示 10.2/4(核數) =2.5%

圖片描述

  • 類載入數量
  • 堆及PerGen的大小
  • 類載入數量
  • 執行緒數

操作

  • 執行垃圾回收
  • 堆Dump

執行緒介面

圖片描述

主要資訊

  • 實時及守護執行緒數
  • 執行緒狀態 執行,休眠, 等待, 駐留, 監視

抽樣器介面

圖片描述

CPU監控

  • 哪些方法是熱點方法
  • 各個方法佔用CPU時間及其比例

記憶體監控

圖片描述

  • 每個執行緒分配記憶體

VisualVM常用外掛

安裝外掛

  1. 工具->外掛

圖片描述

  • 檢查新版本
需要配置url,不然會報以下出錯

圖片描述

  1. 在外掛->設定頁面填入合適的

填入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的使用以及常用外掛的使用,好的工具對於找到問題有事半功倍的效果。在實踐中理解理論知識。