记一次线上oom排查过程

故障

线上pda服务器出现卡慢,由于pda服务器主要是只是做了网关路由的服务,于是我们猜测是某个下游服务出现了问题,通过elk查看慢请求发现基本是仓储服务的请求很慢。于是我们判断是仓储服务出现了问题。

排查

与此同时,仓储的某台服务器服务心跳消息群里已经告警,我们进入服务器的grafana监控发现,这台服务器cpu已经快100%了,服务器处于假死状态,很久就出现了oom
20230314172326.jpg
于是我们第一步是把服务器nginx和dubbo下线,

然后,我们这边jvm配置了参数,oom后会自动把堆内存dump下来,

dump完之后我们对服务器进行了重启。同时我们发现这台服务器已经很久没有发布过了,配置又比较低只有4g,最近又拉了500家公司进来,考虑到可能是用户太多服务器扛不住导致的,于是又临时加了一个点分摊压力

dump文件下完后,我们通过eclips的mat工具进行分析,分析后发现整个堆内存的对象总共就只有一个g,那么问题来了,问什么会oom

image.png

我们查看了oom的报错是overhead limit exceeded,即gc超过一定次数,没有回收出足够的垃圾导致的。于是我们查看了当时的grafana监控,当时fullgc了8次,总共47s,导致服务stoptheworld处于不可用状态,然后仍然没有回收出足够的垃圾,所以最后oom了
image.png
我们服务器的jvm配置是-xms 128m -xmx4096m,当时我们查看机器的可用内存已经只有1g了(当然这里也有问题),于是判断是xms设置的太小了,xms是jvm初始堆内存,刚开始只有128m的大小,后来随着对象越来越多,jvm会进行扩容,但是扩容到1g大小的时候,服务器资源就不够了,于是开始fullgc清理垃圾,经过几次fullgc也没有回收足够的空间,所以导致了oom

解决方案

xms设置成跟xmx一致,也能够避免频繁伸缩导致的卡顿

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值