【工作记录-运维】服务器CPU占用高率排查

448 阅读2分钟

服务器配置

4核16G

出现情况

服务器中有多个测试项目,突然发现某个项目无法访问,日志未出现异常,进程也存在,但CPU占用率高达百分之60以上

排查流程

  1. 通过toc -c查询占用情况,再通过crtl+p根据CPU占用率进行排序后发现该项目CPU占用率异常高,达到百分之200以上

  1. 输入shift+h可以查看每个线程占用情况

  1. 确定了占用高的线程后运行printf "%x \n" 进程ID得到占用最高线程TID的16进制(可能会存在多个线程占用高的情况)

  1. 通过jstack命令分别查看这几个进程的信息`jstack 进程ID |grep 线程TID16进制 -A 展示行数

  1. 查看详细信息可以通过jstack 进程ID命令

可以通过jstack 进程ID > info.txt导出信息

  1. 查看动态堆栈信息jstat -gc 进程ID 刷新周期(时间单位) 打印次数

S0C:第一个幸存区的大小 S1C:第二个幸存区的大小 S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小 EC:伊甸园区的大小 EU:伊甸园区的使用大小 OC:老年代大小 OU:老年代使用大小 MC:方法区大小 MU:方法区使用大小 CCSC:压缩类空间大小 CCSU:压缩类空间使用大小 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间

  1. 查看堆栈统计信息jmap -heap 进程ID

最后更新时间:2021年01月27日