凡事都在事上磨,这样才能精进,成长进步提高! ------ 博客园首页

jvm性能监控与故障排查

首先我们了解一下jdk有那些工具:
jcmd命令:jcmd命令是最全面,基本涵盖所有功能的命令

 

 

jstat:查看gc的使用情况

 

 

jstack:查看线程使用情况

 

 

这些大家可以一个一个敲,或者百度看详解,这边就不一一列举参数了。
我们来看一下jdk可视化工具吧,主要是监控内存,堆,线程等数据:

在使用可视化工具时先启动端口:jcmd pid ManagementAgent.start jmxremote.port=7777 jmxremote.rmi.port=7777 jmxremote.ssl=false jmxremote.authenticate=false

jvisualVM:它主要用于监控内存,堆,线程等数据,启动jvisualVM:

 

 

 

 

 

 

jmc:它的特色主要是飞行器,飞行器就是获取到一个时间段一分钟的jvm运行情况:
在项目启动添加-XX:+UnlockCommercialFeatures -XX:+FlightRecorder命令

 

 

启动jmc:

 

 

 

 

工具就介绍到这里吧,大家可以自行摸索,主要工具也没啥好讲的。。。慢慢摸吧,小博主也一样需要多摸索摸索啦。

故障排除之线程死锁问题:

在我们日常项目运行时可能会出现系统使用很卡的情况,这个时候我们首先需要关注我们服务器cpu使用情况,查看那个进程占用cpu较大,这里我们主要是查看java程序死锁的情况,检查步骤如下:

1:top查看进程使用情况:

 

 

2:打印该进程下,线程使用情况:top -H -p pid

 

 

看图中有许多的线程,但是每个线程占用的cpu又比较少,同时java进程的cpu又下不来,这个时候我们就要关注线程是否进行了死锁,这个也是比较典型的死锁问题。
3:将线程的pid转成16进制:printf “%x\n” 27212

 

 

4:使用jstack命令将线程使用情况输入到文件中:jstack -l 26416 >> a.log

5:打卡日志:vim a.log

 

 

整体线程死锁排查结束

故障排除之gc内存溢出问题:

除了线程死锁以外,我们还可能因为各种原因导致gc内存溢出,那么我们可以在启动jar时添加命令:-XX:+
HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=路径 在内存溢出时,将日志文件输出到指定路径,然后我们可以通过各种工具进行gc内存溢出进行排查了,我这边使用的是Jprofile工具查看class类使用情况,结合进行gc回收查看进行排查。

posted @   追风fc  阅读(118)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-04-14 [已解决]Linux下Java生成图片中文乱码问题
2021-04-14 linux > 和 >> < 区别
2021-04-14 CentOS 7 安装 Jenkins
2021-04-14 lunix下find命令使用
2021-04-14 lunix 下安装maven
2021-04-14 RocketMQ 安装部署教程详解
2021-04-14 rocketmq启动broker报错解决
点击右上角即可分享
微信分享提示