无界队列导致内存耗尽问题一例

探讨了一个边缘功能导致内存溢出的问题,该功能需要定期将数据保存到数据库中。当数据量激增时,内存无法及时释放,最终导致服务崩溃。文章提出了两种解决方案:一是限制队列的最大容量,二是提高数据的入库效率。
某个边缘的功能,需要将某些数据存入数据库,由于功能边缘且数据较少,存入频率为5秒保存一次,一次保存10条;保存的数据用Vector保存,往集合里放,正常情况下量极少也没出问题。
然后在某一天,突然发现服务容灾状态了,根据经验,不是数据库挂了就是后端某应用挂了,查看日志,发现是这个数据量过多,结果数据入库又这么慢,于是内存就爆的了


怎么解决?
1.队列别光加入,超过10000时放弃,以免影响主业务

2.增加入库速度,一次处理1000条


其实http://blog.youkuaiyun.com/coder_xia/article/details/77183615 的本质也是因为没配置队列大小,无界队列过慢导致,虽然没有撑爆内存,虽然这个连接里的是线程池队列,本文的是普通容器(逻辑上是队列,但是容器不是)所以说,队列,还是有界的好

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值