RabbitMQ 流控制学习

rabbitmq有一个流控机制,当超过限定时候就会阻止接受消息,mq流控有三种机制ide

       1,主动阻塞住发消息太快的链接,这个没法调整,若是被阻塞了,在abbitmqctl 控制台上会显示一个blocked的状态。spa

       2,内存超过限量,会阻塞链接,在vm_memory_high_watermark可调orm

       3,剩余磁盘在限定如下mq会 主动阻塞全部的生产者,默认为50m,在disk_free_limit可调.rabbitmq

1、内存控制:队列

vm_memory_high_watermark 该值为内存阈值,默认为0.4。意思为物理内存的40%。40%的内存并非内存的最大的限制,它是一个发布的节制,当达到40%时Erlang会作GC。最坏的状况是使用内存80%。若是把该值配置为0,将关闭全部的publishing 。内存

rabbitmqctl set_vm_memory_high_watermark 0ci

 

Paging 内存阈值,该值为默认为0.5,该值为vm_memory_high_watermark的20%时,将把内存数据写到磁盘。it

如机器内存16G,当RABBITMQ占用内存1.28G(16*0.4*0.2)时把内存数据放到磁盘。io

 

2、硬盘控制:form

当RabbitMQ的磁盘空闲空间小于50M(默认),生产者将被BLOCK,

若是采用集群模式,磁盘节点空闲空间小于50M将致使其余节点的生产者都被block

能够经过disk_free_limit来对进行配置。


查看exchange信息     /sbin/rabbitmqctl list_exchanges name type durable auto_delete arguments
查看队列信息         /sbin/rabbitmqctl list_queues name durable auto_delete messages consumers me
查看绑定信息         /sbin/rabbitmqctl list_bindings
查看链接信息         /sbin/rabbitmqctl list_connections
相关文章
相关标签/搜索