OOM那些事

12 篇文章 2 订阅

随着业务量的增长,很容易产生OOM。目前已经遇到过三次OOM,下面我将讲解每次OOM的解决方案。

问题的产生

最近一次OOM发生在今天,当时前端反馈微信公众号扫描出现故障。后面几乎群里就炸了。我默默的打开了后门,通过郁闷访问试了下,果然挂了。返回503。什么原因导致503呢?什么情况下突然系统就不行了呢?最先想到的是网络问题,然后打开xshell。通过ip端口访问后台。发现竟然可以访问通。所以,我更加断定是网络问题。

在这里插入图片描述

解决思路

我找到了运维,说是网络问题,就让运维去查找问题了。如果是网络问题,中间只有两种设备,分别是NG和spring-gateway的。如果说是NG,那通过NG的其他服务应该也会出问题,但是事实上并没有。那可能是spring-gateway的问题。于是,我们打开了gateway的日志,发现在不断的刷日志。既然不是spring-gateway,那只有我们的应用了。但是刚才的访问,应用也在正常刷日志呀。这时,我一边想,一边看着应用的日志。发现偶然会出现报错,定睛一看,晕,OOM。

于是,我先后重启了服务,通过域名可以正常访问了。算是临时解决了生产问题。

为啥会出现OOM

当我想进一步考虑为啥会出现OOM时,我想通过导出的堆栈日志去分析,发现竟然没有配置OOM打印堆栈的参数-XX:+HeapDumpOnOutOfMemoryError。欲哭无泪。通过分析发现,更多的OOM是发生在HTTP链接,如下所示。

1、配置方法
在JAVA_OPTIONS变量中bai增加
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录}2、参数说明du
(1-XX:+HeapDumpOnOutOfMemoryError参数表示zhi当JVM发生OOM时,自动生成DUMP文件dao。
(2-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
https://blog.csdn.net/vic_qxz/article/details/82219301

https://blog.csdn.net/liberalliushahe/article/details/80534116?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值