排查线程CPU占用高方法

2020-01-13  本文已影响0人  Aries郑涛

1、操作说明

排查过程中涉及到的基础命令参考语法描述,本文档提供的例子都是根据截图里的数字填写的,实际排查需根据命令返回的结果填写。

每一个命令查出来信息都要记录起来,都会复用

2、排查过程

2.1.查找进程号

查看进程占用资源情况:

语法:top

可以看出java的两个进程22714、12406占用CPU很高。

下文针对图中第一条记录22714这个进程进行排查(实际排查中,占用高的都看)

2.2.查找线程号

查看线程占用资源情况:

语法:top -H -p <pid>

其中为top命令查出的进程号,那么命令改为top -H -p 22714。

这里可以看出该java应用,有3个线程CPU占用都到88%左右。

下文针对图中第一条记录15664这个线程进行排查(实际排查中,占用高的都看)

2.3.查询Java堆栈信息

1)、首先,将查出的线程号转换为十六进制数字

语法:printf %x 线程号

其中,线程号前面查出为15664,那么命令改为:printf %x 15664

测试返回结果:3d30

2)、然后,使用jstack命令查询堆栈信息

语法:jstack | grep -a 线程id(十六进制)其中为top命令查出的进程号,这里为22714,线程id为上面小节查出的3d30,那么命令改为:jstack 22714 | grep -a 3d30

上一篇 下一篇

猜你喜欢

热点阅读