记一次spring-boot 项目OOM问题排查过程

    最近新做了一个告警监控的APP项目,后台代码只有用户登录管理和告警查询模块,业务量特别少,项目部署服务器上后,发现内置直接飙升至2G,甚至直接OOM,导致服务器系统重启,于是开始寻找原因。

1、首先排查代码,看代码是否存在死循环及循环引用等情况,经过详细排查后,并没有发现任何问题。

2、可能没有设置合适的jvm启动参数,于是设置该参数 。(参考链接

java -Xms256m -Xmx512m -XX:ParallelGCThreads=2 -Djava.compiler=NONE -jar monitor-0.0.1-SNAPSHOT.jar

通过设定Xmx(程序运行期间最大可占用的内存大小)、Xss(jvm启动的每个线程分配的内存大小)、XX:ParallelGCThreads(GC线程数)以及关闭了JIT功能,达成了降低内存占用的目的。

3、设置项目jvm参数后内存没有继续上升,但是在运行过程中,发现内存会上升到600M左右,自以为能够稳定运行了,结果运行了2个小时后又OOM了

Exception in thread "http-nio-8080-exec-3" Exception in thread "http-nec-4" java.lang.OutOfMemoryError: Java heap space

        at java.nio.HeapByteBuffer.<init>(Unknown Source)

        at java.nio.ByteBuffer.allocate(Unknown Source)

4、使用jmap进行抓包分析后发现,无论是否内存溢出,都会存在几个对象占用特别大的内存。

这个对象是什么情况,代码里面没有用到呀,

5、看线程名称应该是tomcat的nio工作线程,

第一步:打开Histogram看看占用内存最大的是什么对象:

可以看到byte数组占用了接近JVM配置的最大堆的大小也就是400M,显然这是OOM的原因。

第二步: 看一下究竟是哪些byte数组,数组是啥内容,可以看出很明显这和HTTP请求相关。

为了进一步验证猜想,关闭前端调用,只启动后台进程,此时发现内存占用仅在200M左右。进一步使用jmap抓包,没有发现之前内存比较大的那几个对象。当任意调用几个接口后,内存再次飙升,继续抓包分析,发现又出现了几个97.4M的对象,由此已经可以确定,此OOM问题肯定与http请求和tomcat有关。进一步猜想可能是设置了什么不合理的启动参数导致。(一般而言一次请求,不可能会占用这么大的内存。)

第三步: 通过查看GC根查看谁持有了数组的引用:

这符合之前的猜测,是tomcat的线程在处理过程中分配了97.7M的buffer在堆上。

第四步: 检查代码里是否有tomcat或服务器相关配置,看到有这么一个配置:

server.maxHttpHeaderSize=102400000

server.tomcat.max-http-post-size=102400000

至此,基本已经确定了可能就是这个不合理的最大配置参数导致的问题。注销该代码后,进一步部署验证,发现问题已解决。

参考链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容