生产环境遇到的rabbitmq队列堆积原因分析和解决方案

   在8567连续三天晚上10点出现充值相关几个消息堆积的问题,经过分析发现主要问题是充值项目对mq的使用存在一些不合理的地方,当mq负载高时会出现堆积现象。

具体原因如下:

   1、采用的消息模式是get模式,而不是高效的deliver模式,经过在新搭建的mq服务器测试发现,get模式:5000条/秒便会出现严重堆积, deliver模式:20000条/秒不会堆积,如果按照充值项目的写法由于存在后续的问题,每秒几百条的写入就会经常出现消息堆积;

  2、消息的生产和消费共用mq链接和channel

     a)    共用链接会导致:当触发mq的限流控制时,阻塞消费;

     b)    mq的客户端channel实现为避免消息乱窜会大量加lock,把并行变为串行,当写阻塞时,相当于也阻塞了读,相反一样。

 3、不同队列共用链接和channel,会出现队列相互影响的问题。

 

以上问题是相关技术人员对rabbitmq不了解,采用了get模式,并且希望封装一个连接池,结果封装的有问题导致队列和消息之间相互影响,从而把一个火箭变成了一只蜗牛。

 

严重建议使用deliver模式。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值