java应用CPU占用率过高排查

随笔1个月前发布 晓姣
5 0 0

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调优

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...