故障现象:应用隔2-3天就回导致一次CPU飙到600%+(容器,宿主8核),随后宕机。
排查过程:
首先明确CPU飙升原因,
第一步:top -Hp 查看占用CPU进程
发现13~20(16进制为0xd~0x14)线程占用大量CPU资源
第二步:jstack 查看实际占用cpu的进程(与top命令中线程关系nid(hex)=pid(dec))
发现CPU占用方均为GC线程。
第三步:jstat -gcutil 查看gc执行情况,发现
+ Old区占用达100%
+ 在频繁的执行Full GC操作
+ 每次Full GC操作几乎释放不出Old区空间
+ 确认代码中的确没有System.GC()显式操作