如何查看CPU消耗最高的线程

如何找出消耗CPU最多的线程?

  1.使用 top -c 找出所有当前进程的运行列表

  2. 按P对所有进程按CPU使用率进行排序,找出消耗最高的线程PID

  3.使用 top -Hp PID,查出里面消耗最高的进程,继续按P排序

  4.这个线程PID是十进制的,我们需要转换为十六进制

此时已经找到了消耗CPU资源最多的线程,下面为排查问题过程

  5. 导出进程快照

jstack -l PID> ./PID.stack  //PID为进程PID

   6.再用grep查看一下线程在文件里做了啥

cat PID.stack |grep '线程PID十六进制' -C 8

实例

1. top -c   

2. 按P

 

   显示Java进程 PID 为 2609 的java进程消耗最高

 3. top -Hp 2609

 4. 按P

   可以看到 2854 CPU消耗最高,转换为十六进制:b26

5.  jstack -l 2609 > ./2609.stack

6. cat 2609.stack |grep 'b26' -C 8

  查看问题

原文地址:https://www.cnblogs.com/qmillet/p/13066732.html