手把手教你java CPU飙升300%如何优化

2024-07-29 20:07:47 浏览数 (2)

背景

今天有个项目运行一段时间后,cpu老是不堪负载。

排查

top 命令

TOP 命令 top t 按cpu 排序 top m 按内存使用率排序

从上面看很快看出是 pid 4338 这个进程资源消耗很高。

top -Hp pid

  • top -Hp 4338 找到对应线程消耗的资源
  • shft p cpu占用进行排序,
  • shift m 按照内存排序

这里拿4353 举例线程资源占用最多,这里先记下来。然后获取4353的16进制值

代码语言:javascript复制
 printf "%xn" 4353

得到 4353 对应16进制 是1101

接下来导出该pid 进程快照结果,从而去找线程

jstack命令

代码语言:javascript复制
jstack -l 4338 >  js.txt

打开 js.txt 搜索4353 对应16进制 是1101

从图可知是gc 导致。

0 人点赞