Rabbitmq 流控

生产者流控

当触发Rabbitmq的流控后,会限制生产者发送消息的频率,比如之前是2W/s限制后可能在一段时间内无法发送消息.
触发流控条件,达到内存这只的水位线(vm_memory_high_watermark )或者磁盘达到限制剩余量.一般在产生的原因是长期的生产者发送速率大于消费者消费速率导致.

流控实验

设置rabbitmqctl set_vm_memory_high_watermark 0.03让测试容易出效果默认是使用内存的40%。


* Publishers will be blocked until this alarm clears *


=INFO REPORT==== 23-Jul-2015::10:16:13 ===
vm_memory_high_watermark clear. Memory used:116782008 allowed:120566292
=WARNING REPORT==== 23-Jul-2015::10:16:13 ===
memory resource limit alarm cleared on node ansible@ansible
=INFO REPORT==== 23-Jul-2015::10:16:14 ===
vm_memory_high_watermark set. Memory used:128453216 allowed:120566292

经测试,发现一旦超过了内存使用上线,就会触发流控机制,触发流控的原因是因为消费者处理消息的能力,跟不上消息发送这产生的能力,最后时间长了,会导致内存
超过了规定使用的内存,这样会触发消息产生端的流控机制,控制消息发送的速度,来
减轻MQ和消费者端的压力。
解决方式:

根据Routingkey进行消息的切割,绑定不同的queue进行消费
增加消费者端的消费能力,或者增加消费者(根本解决)
控制消息产生者端的发送速率(不太现实)
增加mq的内存(治标不治本)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值