实战如何从线上程序查找出cpu过高的原因 (有问题的代码)?

1. TOP

首先查看系统资源占用信息,TOP看一下

 

  从这里可以查找cpu占用过高的 进程号  比如  第一个java进程  63959

2. 怎么通过进程号 查找这个进程中的线程信息呢?

 可以ps --help指令查查,我是百度搜的

2.1  ps -mp [进程ID PID] -o THREAD,tid,time

 

 2.2 找到耗时cpu最高的线程id   这里是查看的我们生产应用,其实无问题

   假如是 63793这个线程,占用cpu时间1个小时10分钟

2.3 通过printf  "%x\n" 63973  可以将线程id转化为16进制表示, f9e5

    

2.4 打印线程的堆栈信息

   jstack pid |grep  tid (16进制表示) -A 30  

 

 

 

2.5  一般从上面的堆栈信息里就能找出有问题的代码了

    看看代码是否有死循环或死锁导致的cpu飙高

 

posted @ 2020-10-19 10:45  hxwang  阅读(362)  评论(0编辑  收藏  举报