服务器配置
4核16G
出现情况
服务器中有多个测试项目,突然发现某个项目无法访问,日志未出现异常,进程也存在,但CPU占用率高达百分之60以上
排查流程
- 通过
toc -c查询占用情况,再通过crtl+p根据CPU占用率进行排序后发现该项目CPU占用率异常高,达到百分之200以上
- 输入
shift+h可以查看每个线程占用情况
- 确定了占用高的线程后运行
printf "%x \n" 进程ID得到占用最高线程TID的16进制(可能会存在多个线程占用高的情况)
- 通过
jstack命令分别查看这几个进程的信息`jstack 进程ID |grep 线程TID16进制 -A 展示行数
- 查看详细信息可以通过
jstack 进程ID命令
可以通过
jstack 进程ID > info.txt导出信息
-
查看动态堆栈信息
jstat -gc 进程ID 刷新周期(时间单位) 打印次数
S0C:第一个幸存区的大小 S1C:第二个幸存区的大小 S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小 EC:伊甸园区的大小 EU:伊甸园区的使用大小 OC:老年代大小 OU:老年代使用大小 MC:方法区大小 MU:方法区使用大小 CCSC:压缩类空间大小 CCSU:压缩类空间使用大小 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间
- 查看堆栈统计信息
jmap -heap 进程ID
最后更新时间:2021年01月27日