【故障】oom导致 redis超时 rec 队列打满,导致tomcat拒绝服务

时间:2024-05-23 20:52:58

1 现象描述:

磁盘占用到了50% 累计 ;

PRINT_GC="-XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:-PrintHeapAtGC -XX:-UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -Xloggc:/root/123/logs/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/123/logs/heaperr.log"

oom 文件生成

 

【故障】oom导致 redis超时 rec 队列打满,导致tomcat拒绝服务

【故障】oom导致 redis超时 rec 队列打满,导致tomcat拒绝服务2  A正常机器

 4核心 load在 1左右,即只有一个等待进程任务,最多可以达到4,机器负载刚刚满;

注意cpu利用率和load没有直接关系;

如 cpu利用率100%,但是load较低,说明程序有问题,如死循环等一直占着cpu时间片,计算能力耗尽;

即使cpu利用率20%,load也可能很高,比如,等待进程的基本都是wait io 或者磁盘文件交互,这样cpu的计算能力基本浪费,但是等待进程可能超过cpu核心数,于是load的飙高;

【故障】oom导致 redis超时 rec 队列打满,导致tomcat拒绝服务

 

3 B异常机器监控

【故障】oom导致 redis超时 rec 队列打满,导致tomcat拒绝服务

4 A,B机器比较(物理内存都是16G cpu都是4核心)

但是

B: GC_PARAM="-Xmx4g -Xms4g -XX:G1HeapRegionSize=2m"

A:GC_PARAM="-Xmx8g -Xms8g -XX:G1HeapRegionSize=2m"

 

内存使用虽然只有A的一半,但是cpu利用率和系统负载基本是A的一倍,稳定;

cpu大部分时间用来垃圾回收了。是不是遇到作业数据大时发生,oom

系统中使用了localcache,淘汰会占用时间;

内存不足导致-----侧面反映到了redis 操作上面,反映出超时

 

5 B 机器jvm内存升级后  恢复正常

【故障】oom导致 redis超时 rec 队列打满,导致tomcat拒绝服务