如何定位cup占用过高问题

CPU负载过高解决问题过程

(1)根据top命令找到占用cup高的进程编号,此处以pid 8211为例

如何定位cup占用过高问题
(2)找到该进程pid后,首先显示该进程线程列表,并按照cup占用高的线程进行排序

          ps -mp  8211 -o THREAD,tid,time | sort -rn

如何定位cup占用过高问题
(3)找到耗时高 cup占用率高的线程号 如8251,将该线程id转换为16进制的格式

        printf "%x\n" 8251

如何定位cup占用过高问题
(4)打印线程的堆栈信息

          jstack -l 8209 > /home/8251.stack

(5)在堆栈文件中搜索线程ID等于nid=0x203b的线程,即可列出该线程对应的类

(6)根据线程信息找到对应的类定位问题即可

参考链接

https://blog.****.net/lj1314ailj/article/details/73550097