JVM线上CPU100%、内存泄露问题排查
原⽂链接:
作者:
前⾔
后⽂会从 Windows、Linux 两个系统来做⽰例展⽰,有⼈会有疑问了:为什么要说 Windows 版的 ? ⽬前市⾯上还是有很多 Windows 服务器的,应⽤于传统⾏业、政府结构、医疗⾏业 等等;两个系统下的情况都演⽰下,有备⽆患
板块轮动后⽂中⽤到了两个⼯具:Processor Explorer、MAT,它们是什么,有什么⽤,怎么⽤,本⽂不做介绍
cpu 100%
下⾯的⽰例中, cpu 的占有率没到 100%,只是⽐较⾼,但是排查⽅式是⼀样的,希望⼤家不要钻⽜⾓尖
Windows
1、到 cpu 占有率最⾼的 java 进程号
PID: 20260
2、根据进程号到 cpu 占有率最⾼的线程号
双击刚刚到的 java 进程
一年级数学试卷分析
线程号: 15900 ,转成⼗六进制: 3e1c 3、利⽤ jstack ⽣成虚拟机中所有线程的快照
命令: jstack -l {pid} > {path}
⽂件路径: D:\20260.stack
4、线程快照分析
我们先浏览下快照内容
内容还算⽐较简洁,线程快照格式都是统⼀的,我们以⼀个线程快照简单说明下
"main" #1 prio=5 os_prio=0 tid=0x0000000002792800 nid=0x3e1c runnable [0x00000000025cf000]汽车销售工作总结
我们前⾯到占 cpu 最⾼的线程号: 15900 ,⼗六进制: 3e1c ,⽤ 3e1c 去快照⽂件⾥⾯搜⼀下
⾃此,到问题
美女有几种类型Linux
排查⽅式与 Windows 版⼀样,只是命令有些区别
1、到 cpu 占有率最⾼的 java 进程号
使⽤命令: top -c 显⽰运⾏中的进程列表信息, shift + p 使列表按 cpu 使⽤率排序显⽰
PID = 2227 的进程,cpu 使⽤率最⾼
2、根据进程号到 cpu 占有率最⾼的线程号
使⽤命令: top -Hp {pid} ,同样 shift + p 可按 cpu 使⽤率对线程列表进⾏排序
PID = 2228 的线程消耗 cpu 最⾼,⼗进制的 2228 转成⼗六进制 8b4
3、利⽤ jstack ⽣成虚拟机中所有线程的快照
价值规律的内容和作用
4、线程快照分析
分析⽅式与 Windows 版⼀致,我们可以把 2227.stack 下载到本地进⾏分析,也可直接在 Linux 上分析在 Linux 上分析,命令: cat 2227.stack |grep '8b4' -C 5
⾄此定位到问题
于震电视剧大全不管是在 Windows 下,还是在 Linux 下,排查套路都是⼀样的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论