JVM实战-通过借助指令及监控分析工具优化线上系统的性能

前情

此前发布的系统最近客户反馈存在一些问题,主要是在查询数据时页面出现较长时间的卡顿,以及下载报表数据时出现报500错误信息,于是我们对此进行了各种情况分析以及借助性能分析工具验证,其中在导报表过程出现了OOM情况,并定位错误问题,最终顺利优化;其中核心是通过下文介绍的jmap命令以及jprofiler工具进行查看定位问题,可供大家参考。

JVM监控指令

如下指令是jdk自带支持的指令,只要本机安装了jdk环境,则均可执行成功!

jps:查看java进程信息

jps

 jconsole:图形化查看内存线程等信息(也间接包含了jstat和jstack命令显示的内容)

内存信息

 jstat:查看内存当前各指标状态信息

-gc +Pid(进程id):显示各指标信息
-gcutil +Pid(进程id) +internal(间隔多少毫秒):显示每间隔时间下各指标信息
-gcnew+Pid(进程id):显示新生代区信息
-gcold+Pid(进程id):显示新生代区信息

  jstack:查看当前线程状态信息

jstack+pid:查看线程信息

 jmap:查看内存信息或dump下内存详情(非常重要,开发中经常用到)

jmap -heap +pid:查看内存详情( pid在linux系统上也可使用ps -ef |grep java查看 )
jmap -dump:file=xxx pid:生成dump内存文件,再根据工具分析问题

比如:二进制方式生成文件/opt/wkt/wkt1.hprof,PID=64421(HProf文件是Java等内存dump文件)

jmap -dump:format=b,file=/opt/wkt/wkt1.hprof 64421

JVM性能分析工具

visual VM

比jconsole工具强大多了

Jprofiler

window下可视化分析工具

 Arthas

阿里的开源产品组件,官网:简介 | arthas

阿里出品

猜你喜欢

转载自blog.csdn.net/qq_34020761/article/details/129960109