如何查看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

  查看问题

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM