记一次线上服务oom排查记录-踩坑历程

Posted by 张伟真 on 2024-01-25
Estimated Reading Time 1 Minutes
Words 406 In Total
Viewed Times

记一次线上服务oom排查记录-踩坑历程

现象背景:
发版后突现服务起来后内存OOM,或者启动后几分钟后OOM,只打了 java.lang.OutOfMemoryError: Java heap space 内存爆炸了,线上大量请求异常。 oom之前没出现其他异常日志;
运行后发现异常

1
org.apache.catalina.connector.ClientAbortException: java.io.IOException:Broken pipe 

踩坑路程:

  1. 内存直接扩大一倍,发现服务还是起来后瞬间就呗打满OOM,服务暂时不可用,没办法只能先分析原因,线上先用
    分析思路,兵分2路走,第一步生产已经配置异常生产dump文件,文件有点大,慢慢下载

第二步,用arthas+jprofiler导出对应的时间内的jfr, 加上参数重启pod,讲异常后生产的jfr下载分析,-XX:+FlightRecorder -XX:StartFlightRecording=duration=600s,filename=flight.jfr
在idea打开可以看到生成的热点火焰图,分析
可以看到对应的cpu使用情况,具体是哪个链路哪个类,看是否有CPU异常,可以看方法的调用量及占比
中间看出有几个消息线程池COPU占用偏高,但是不像引起OOM的原因,等dump分析结合一起看

其中一个现象出现大量超大请求头,参考了以下链接,排查了配置,发现配置了请求头为200M ,系统启动事有消息队列疯狂请求任务,走http请求,导致应用启动没多久就挂了

https://juejin.cn/post/7278247059517800467

调整好请求头参数后oom时间降低下来了


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !