最近维护一个老系统,但凡有点量上来,系统就慢的慌,把排查思路写个小结:
1.使用top查看进程CPU占用率
1.png
- top命令使用线程模式查看具体是哪个线程造成CPU使用率100%
top -Hp 9723
2.png
3.本地线程id转化为java线程的id
printf "%x\n" 29802转换线程id为16进制
3.png
4.查找jstack 9723进程里面线程id为746a的线程栈
jstack 9723|grep -C5 746a
4.png
找到对应代码
5.png
定位CPU100%原因:业务状态未被更新,造成代码死循环。