看看头条

Linux下查找java进程耗用cpu最高的线程方法-干货篇

前言

在很多维护java应用的时候,我们很多人都是停留在哪个java进程耗用了多高的CPU,然后把问题反馈给相应的开发人员,告诉开发人员他的程序有问题,CPU利用异常。但是这仅仅停留在进程的层面,可能很多运维人员本身也不知道这个java进程在干什么,到底是什么东西在引起高CPU耗用,因为他们觉得,我只能管到进程层面的东西,进程里面在干什么我不知道,只要把这个问题反馈给开发人员就行了。

问题丢给开发人员,也不一定每个开发人员都可以分析出java进程CPU耗用高的背后存在什么问题,这个时候,其实就需要开发人员和运维人员互相协助进行问题原因查找和处理了。

Linux下查找java进程耗用cpu最高的线程方法-干货篇

1、找出cpu耗用厉害的进程pid

终端执行top命令,然后按下shift+p 查找出cpu利用最厉害的pid号:

pid号:31365

Linux下查找java进程耗用cpu最高的线程方法-干货篇

2、根据上面第一步拿到的pid号,top -H -p pid 。然后按下shift+p,查找出cpu利用率最厉害的线程号。

线程号:31441

Linux下查找java进程耗用cpu最高的线程方法-干货篇

3、将获取到的线程号转换成16进制,去百度转换一下就行

转换的结果:7AD1

Linux下查找java进程耗用cpu最高的线程方法-干货篇

4、使用jstack工具将进程信息打印输出

jstack pid号 > /tmp/t.dat

jstack 31365 > /tmp/t.dat

5、编辑/tmp/t.dat文件,查找线程号对应的信息

这个就是java进程中耗用CPU频繁和严重的线程信息,可以将该信息提供给开发人员,他们会根据线程信息分析出是属于哪一块的业务内容。到这里就可以交给开发人员了,相信这样的话,处理问题的时间可以大大减少。

Linux下查找java进程耗用cpu最高的线程方法-干货篇

|\n|\r

赞 (0)
分享到:更多 ()