1.背景
服务器CPU使用率告警,紧急排查。
2.排查思路
2.1 top查看各进程的CPU占用率
top
查到进程的pid
2.2 查看该进程的所有线程
top -Hp <pid>
发现大量的GC task thread#
的cpu使用超过90%,定位到时频繁GC导致,可能是内存不足引起
# jstat监控GC情况,其中:<vmid> 是Java虚拟机的ID,通常是进程ID。 [interval]是可选的,表示采样间隔时间,单位为毫秒。[count]是可选的,表示采样次数。例如,要监控进程ID为1234的Java应用程序的GC情况,每隔1秒钟输出一次采样信息,总共采样5次
jstat -gc 1234 1000 5
# 查看垃圾回收的空间占比
jstat -gcutil 21430 1000
# gc原因
jstat -gccause 21430 1000
2.3 调整java进程的jvm内存设置
# 查看默认值:最大堆分配内存 -Xmx 相当于MaxHeapSize
jinfo -flag MaxHeapSize 21430
# 调整默认设置
java -jar -Xms30g -Xmx30g
3.引用
[JVM:利用jstat查看GC信息及堆内存设置(二)(https://blog.csdn.net/qq_24950043/article/details/129777267)
Java应用生产Full GC或者OOM问题如何定位
jstack问题定位分析
[垃圾回收GC (Allocation Failure) Full GC (Ergonomics)](https://blog.csdn.net/weixin_43821874/article/details/90675264
Full GC (Ergonomics) 产生的原因
JVM-JVM调优