如何選擇RabbitMQ的消息保存方式?


RabbitMQ對於queue中的message的保存方式有兩種方式:disc和ram。如果采用disc,則需要對exchange/queue/delivery mode都要設置成durable模式。Disc方式的好處是當RabbitMQ失效了,message仍然可以在重啟之后恢復。而使用ram方式,RabbitMQ處理message的效率要高很多,ram和disc兩種方式的效率比大概是3:1。所以如果在有其它HA手段保障的情況下,選用ram方式是可以提高消息隊列的工作效率的。

如果使用ram方式,RabbitMQ能夠承載的訪問量則取決於可用的內存數了。RabbitMQ使用兩個參數來限制使用系統的內存,避免系統被自己獨占。

[{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75}, {vm_memory_high_watermark, 0.4}]}].

vm_memory_high_watermark:表示RabbitMQ使用內存的上限為系統內存的40%。也可以通過absolute參數制定具體可用的內存數。當RabbitMQ使用內存超過這個限制時,RabbitMQ 將對消息的發布者進行限流,直到內存占用回到正常值以內。

Vm_memory_high_watermark_paging_ratio:表示當RabbitMQ達到0.4*0.75=30%,系統將對queue中的內容啟用paging機制,將message等內容換頁到disk 中。

RabbitMQ的內存使用情況可以通過“rabbitmqctl status”或者管理插件中的Web UI查詢。

圖片描述

各個內存條目的含義請參照:https://www.rabbitmq.com/memory-use.html

當消息發送的速率超過了RabbitMQ的處理能力時該怎么辦?

RabbitMQ會自動減慢這個連接的速率,讓client端以為網絡帶寬變小了,發送消息的速率會受限,從而達到流控的目的。 使用”rabbitmqctl list_connections”查看連接,如果狀態為“flow”,則說明這個連接處於flow-control 狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM