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

前言

在上一期主要講到JVM優化的概念及經驗。這一節章節去講述相關工具的基本使用。html

VisualVM

JDK自帶,VisualVM 是一款免費的,集成了多個 JDK 命令行工具的可視化工具,它能爲您提供強大的分析能力,對 Java 應用程序作性能分析和調優。這些功能包括生成和分析海量數據、跟蹤內存泄漏、監控垃圾回收器、執行內存和 CPU 分析,同時它還支持在 MBeans 上進行瀏覽和操做。java

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"git

  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.passwordgithub

概述界面

圖片描述

主要信息vim

  1. 主機及端口
  2. jvm參數信息

監視界面

圖片描述

主要信息jvm

  • cpu指標工具

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

圖片描述

  • 類加載數量
  • 堆及PerGen的大小
  • 類加載數量
  • 線程數

操做性能

  • 執行垃圾回收
  • 堆Dump

線程界面

圖片描述

主要信息優化

  • 實時及守護線程數
  • 線程狀態 運行,休眠, 等待, 駐留, 監視

抽樣器界面

圖片描述

CPU監控

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

內存監控

圖片描述

線程分配內存

圖片描述

VisualVM經常使用插件

安裝插件

  1. 工具->插件

圖片描述

  • 檢查新版本
須要配置url,否則會報如下出錯

圖片描述

  1. 在插件->設置頁面填入合適的

https://visualvm.github.io/pl... 在這個網站選擇合適的插件地址
圖片描述網站

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

相關文章
相關標籤/搜索