在监测系统cpu运行情况时,出现了一个进程占用CPU百分比极高的情况
服务器上的java进程占用过高,初步猜测是某处陷入死循环。接下来要排查故障是在哪一行代码出的错
输入命令: ps -mp PID -o THREAD,tid,time
指令 (printf "%x\n" 12380) 将TID从十进制转化成十六进制。得到
305c
可以看到TID为12380(305c)的线程CPU占用率异常。
进行下一步的排查
输入指令查看线程是由哪一行代码开启 : jstack pid | grep tid -A 30
进入代码查看相关问题确实发现阻塞线程并未阻塞造成死循环。更改阻塞时间修复BUG,重新提交到服务器。
恢复正常。
本文介绍了一种排查服务器上Java进程CPU占用过高的方法。通过使用特定命令找到占用CPU极高的线程,并进一步定位到具体代码行,最终修复了死循环导致的问题。

1381

被折叠的 条评论
为什么被折叠?



