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
相關文章
相關標籤/搜索