线上发生MQ消费延时报警,看业务log发现有几秒钟一行日志都没有,,参考历史情况这种情况不可能出现(发生报警是在业务高峰期),随后日志里出现大量redis timeout,http broken pipeline, connection reset by peer等报错,第一反应是网络断了。
查看阿里ECS,

宽带流量基本降低为0,看其他中间件redis等访问量也有明显降低,cpu涨到75%,负载达到8+(4c8g的配置)。后来运维查看网络详细情况,发现网络流量是几百K的样子并不全是0,这就说明网络没断,cpu在忙,网络没断,业务线程不在跑(没业务日志),那就可能是在GC了,查看gc日志,果然发现在这个时间段疯狂full gc,
2021-05-27T09:21:34.207+0800: 135604.692: [Full GC (Allocation Failure) 3571M->3400M(3584M), 6.9447640 secs]
[Eden: 0.0B(179.0M)->0.0B(179.0M) Survivors: 0.0B->0.0B Heap: 3571.2M(3584.0M)->3400.1M(3584.0M)], [Metaspace: 150612K->150612K(1204224K)]
[Times: user=11.06 sys=0.00, real=6.94 secs]
2021-05-27T09:21:41.737+0800: 135612.222: [Full GC (Allocation Failure) 3572M->3414M(3584M), 7.2328019 secs]
[Eden: 0.0B(179.0M)->0.0B(179.0M) Survivors: 0.0B->0.0B Heap: 3572.1M(3584.0M)->3414.7M(3584.0M)], [Metaspace: 150612K->150612K(1204224K)]
[Times: user=11.36 sys=0.00, real=7.23 secs]
确定是gc问题,拿到heap文件,MAT分析之,找到原因。
网友评论