背景
今天有个项目运行一段时间后,cpu老是不堪负载。
排查
top 命令
TOP 命令
top t 按cpu 排序
top m 按内存使用率排序
从上面看很快看出是 pid 4338 这个进程资源消耗很高。
top -Hp pid
- top -Hp 4338 找到对应线程消耗的资源
- shft+p cpu占用进行排序,
- shift+m 按照内存排序
这里拿4353 举例线程资源占用最多,这里先记下来。然后获取4353的16进制值
printf "%x\n" 4353
得到 4353 对应16进制 是1101
接下来导出该pid 进程快照结果,从而去找线程
jstack命令
jstack -l 4338 > js.txt
打开 js.txt 搜索4353 对应16进制 是1101
从图可知是gc 导致。