背景
在生产环境偶尔会有cpu突然飙高的时候,需要定位问题,判断逻辑是否有问题
方法
- 找出占用cpu最大的进程
使用top命令找出使用cpu最多的进程 - 找出暂用最多的线程
使用 top -Hp <pid>来找到占用最多的线程 - 打印线程信息
使用jstack -l <pid>来打出线程快照,通过上面找到的线程信息来定位问题代码
可以使用线程名称查找,也可以通过线程ID查找(需要转成16进制),比如12907对应326b
附
线程状态总览(可以查看Thread#State类中来确定线程有哪几种状态)
image.png
网友评论