gateway 内存溢出问题_详解SpringCloudGateway内存泄漏问题

在压力测试中,SpringCloud Gateway出现内存泄漏问题,表现为并发不稳定、内存暴涨及容器挂掉。调整资源限制后,通过内存快照、arthas分析及堆外内存检查,发现是堆外内存问题,特别是请求头修改部分代码导致内存异常增长。经过代码审查和修改,解决了内存飙升问题,但原因仍需进一步调查。
摘要由CSDN通过智能技术生成

项目完善差不多,在进入压力测试阶段期间,发现了gateway有内存泄漏问题,问题发现的起因是,当时启动一台gateway,一台对应的下游应用服务,在压力测试期间,发现特别不稳定,并发量时高时低,而且会有施压机卡住的现象,然后找到容器对应的宿主机,并使用container stats命令观察内存,经过观察发现,压力测试时内存会暴涨,并由于超过限制最大内存导致容器挂掉(这里由于用的swarm所以会自动选择节点重启)最终发现由于之前测试服务器配置低,所以限制了堆大小为1g,容器cpu 1,容器内存限制为了1g,经过调整后将内存改为4g且不限制容器资源的情况下,并发稳定,单机qps也不错,但是多次压力测试后依然会有卡住的问题,观察了日志之后确定为内存泄漏

io.netty.util.internal.OutOfDirectMemoryError:

failed to allocate 16777216 byte(s) of direct memory

(used: 4110417927, max: 4116185088)

- LEAK: ByteBuf.release() was not called before it's garbage-collected.

发现问题之后,我进入容器内dump了内存快照,并下载到本机由jvisualvm分析,分析过程中并没有发现异常情况,由于gateway底层是netty,所以怀疑是堆外内存出了问题,这时候我从快照中查询bytebuff,依然很小,后来直接使用arthas去线上分析,分析发现堆内存正常,gc也没有问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值