欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

系统优化怎么做-JVM优化之VisualVM

程序员文章站 2022-03-28 20:00:41
大家好,这里是「聊聊系统优化 」,并在下列地址同步更新 博客园:http://www.cnblogs.com/changsong/ 知乎专栏:https://zhuanlan.zhihu.com/youhua 思否专栏:https://segmentfault.com/blog/youhua 全网私 ......

大家好,这里是「聊聊系统优化 」,并在下列地址同步更新

  • 博客园:
  • 知乎专栏: 
  • 思否专栏:
  • 全网私活,免费订阅: 

在这里我会从基于j2ee系统及互联网架构方面,来谈谈系统优化的各个方面,干货满满,欢迎订阅及关注!

前言

在上一期主要讲到jvm优化的概念及经验。这一节章节去讲述相关工具的基本使用。

visualvm

jdk自带,visualvm 是一款免费的,集成了多个 jdk 命令行工具的可视化工具,它能为您提供强大的分析能力,对 java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 cpu 分析,同时它还支持在 mbeans 上进行浏览和操作。

tomcat jmx配置

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优化之VisualVM

主要信息

  • 主机及端口
  • jvm参数信息

监视界面

系统优化怎么做-JVM优化之VisualVM

主要信息

  • cpu指标
如cpu是多核,如果是n核,这里显示的单核平均占用
在通过top命令,看到的是 乘上n的结果,visualvm显示 10.2/4(核数) =2.5%

系统优化怎么做-JVM优化之VisualVM

  • 类加载数量
  • 堆及pergen的大小
  • 类加载数量
  • 线程数

操作

  • 执行垃圾回收
  • 堆dump

线程界面

系统优化怎么做-JVM优化之VisualVM

主要信息

  • 实时及守护线程数
  • 线程状态 运行,休眠, 等待, 驻留, 监视

抽样器界面

系统优化怎么做-JVM优化之VisualVM

cpu监控

  • 哪些方法是热点方法
  • 各个方法占用cpu时间及其比例

内存监控

系统优化怎么做-JVM优化之VisualVM

每个线程分配内存

系统优化怎么做-JVM优化之VisualVM

visualvm常用插件

安装插件

工具->插件

系统优化怎么做-JVM优化之VisualVM

检查新版本

需要配置url,不然会报以下出错

系统优化怎么做-JVM优化之VisualVM

在插件->设置页面填入合适的

 在这个网站选择合适的插件地址

系统优化怎么做-JVM优化之VisualVM

填入url地址,确定

系统优化怎么做-JVM优化之VisualVM

配置成功后,在可用插件列表

系统优化怎么做-JVM优化之VisualVM

常用插件

  • 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连接

系统优化怎么做-JVM优化之VisualVM

visualgc界面

系统优化怎么做-JVM优化之VisualVM

注意点:

  • 内存大小分情况
  • 主要关注 gc time长短及间隔

tracer

可以查询heap,pergen,classes, threads的

系统优化怎么做-JVM优化之VisualVM

如图

tracer可以监控很多项目

  • heap
  • pergen
  • cleass
  • treads
  • 等等

利用visualvm检查full gc

  1. visualgc查看是否old gen,eden是否存在持续上升
  2. mbean查看
  3. 利用sampler的分析内存采集,确定问题代码
内存视图,查看当前哪些业务对象比较多,并存在一直递增的趋势
线程视图,查看哪些线程分配的内存最多

intellij idea集成visualvm

  1. file ->setting->plugins->browsers repositrories
  2. 搜索visualvm launcher
  3. 安装, 重启idea
  4. 默认run及debug旁边,会出现run with visulavm及debugwith visulavm的按钮

系统优化怎么做-JVM优化之VisualVM

方便本地压测监控jvm情况

总结

本节主要讲解visualvm的使用以及常用插件的使用,好的工具对于找到问题有事半功倍的效果。在实践中理解理论知识。