rabbitmq内存暴增触发流控机制问题-持续更新

1.Linux下docker安装的RabbitMQ版本是rabbitmq_3_8_1(系统运行内存512G两台,搭建的镜像集群)。rabblitmq官网
2.数据量小的时候没有暴露出来问题,但是随着系统访问量增加,大概是5、6千万条的时候,就有一台broker的内存爆涨就触发了流控机制(默认占用到系统内存40%的时候触发),导致整个镜像集群停止工作。具体现象如下图:
在这里插入图片描述
所有连接都blocked了
在这里插入图片描述
3.内存使用情况查看
在这里插入图片描述
经查看,主要是系统预加载但是未使用的内存占用过大导致的。
4.初步的确定是系统内存使用情况报告的策略的问题(但是,两台服务端的策略一样,作为从服务的内存增涨的太吓人了)
官网上关于这一块的描述是这样的,如下图:
在这里插入图片描述
默认用的是allocated,接下来我们看下中文翻译版的,如下图:
在这里插入图片描述
docker安装的时候,没有设置内存报告策略,应该是默认的allocated 但是,线上确实是rss,重新reset设置也是rss,测试环境docker新装了一个也是rss…
docker重置rabbitmq设置的命令,重置一下再重新加入集群

docker exec -it rabbit1 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit2
rabbitmqctl start_app

启动完查看策略用的还是rss模式,不确定是不是需要整个集群重启之后才生效,由于是生产环境,集群不能随便重启,至少保证一台服务能用。(后来看文档发现,不同版本的rabbitmq默认配置不一样)
5.现在暂时的解决方案是先给broker1杀掉,让broker2对外暴露服务,不影响用户正常使用,接下来计划在测试环境模拟线上问题,以备解决长远问题。
由于采用的是镜像队列的模式(ps:如果不清楚的可以先百度查询rabbitmq镜像队列原理),而且杀掉的broker本来就是从服务器,所以不用担心消息丢失的问题。

6.本次博客先记录下问题,后面彻底解决了在来总结。如果哪位大佬遇到过类似的问题,我们可以交流下,共同进步。

=============================================================
7.本次编辑于2021.09.07,继上次调试完之后,过了两天抱着试试的态度又启动另一台服务,竟然神奇的好了,到目前为止都还在正常运行,具体如下图:
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值