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类使用情况,结合https://gceasy.io进行gc回收查看进行排查。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值