java程序服务器CPU占用过高问题排查步骤及问题解决

1、cpu过高是那个程序造成的?使用top命令

java程序服务器CPU占用过高问题排查步骤及问题解决

2、更具PID来查看具体是那个进程下对应的线程造成,及通过进程来确定cpu过高的线程tid。

命令:Ps -mp pid -o THREAD,tid,time

java程序服务器CPU占用过高问题排查步骤及问题解决

java程序服务器CPU占用过高问题排查步骤及问题解决

 

3、因为线程的id都是16进制的需要将10进制转换成16进制,

方法:1、直接使用计算器

方法:2、使用命令

java程序服务器CPU占用过高问题排查步骤及问题解决

得到结果:得到这三个数的16进制为别为3ec4,3ec5,3ec7

 

4、jstack查看进程信息然后利用grep来过滤对应的线程id信息。

通过jstack -pid |grep tid 查询/或者直接使用 jstack -pid |grep tid  -A60(显示前60行)

java程序服务器CPU占用过高问题排查步骤及问题解决

从这里能看出,这3个线程目前还处于运行状态的

再通过jstack查看详细点的信息

java程序服务器CPU占用过高问题排查步骤及问题解决

剩下2个图就省略了