RabbitMQ學習筆記(6、RabbitMQ進階)

目錄:

  • 性能
  • 存儲機制
  • 內存及磁盤告警

性能:

影響RabbitMQ性能的因素有不少,主要的分爲硬件性能與軟件性能。算法

硬件性能:如網絡、內存、CPU等等。網絡

軟件性能:消息持久化、消息確認、路由算法與綁定規則、投遞消息等等。性能

一、消息持久化:持久化會寫入磁盤,多一次IO操做,設置非持久化可提高性能。spa

二、消息確認:消費者訂閱隊列時,設置自動確認也能夠提高性能。code

三、路由算法與綁定規則:fanout,只要綁定了交換器就能夠匹配到,匹配規則少,性能確定是綁定規則中最佳的;direct,除了交換器還須要匹配路由鍵,性能次之;topic,最複雜的匹配規則,相對其它兩個性能最差。blog

四、投遞消息索引

存儲機制:

隊列結構接口

消息一般由兩部分組成,rabbit_amqqueue_process和backing_queue。rabbitmq

一、rabbit_amqqueue_process:負責協議相關的消息處理,即接受生產者發佈的消息、消息的投遞、處理消息的確認等等。隊列

二、backing_queue:消息存儲的具體形式和引擎,並向rabbit_amqqueue_process提供相關接口。

消息在隊列中的狀態

一、alpha:消息內容、索引全在內存中

二、beta:內容在磁盤,索引在內存。

三、gamma:內容在磁盤,索引在內存和磁盤都有(只有持久化的消息纔會處理此狀態)。

四、delta:內容和索引全在磁盤中

內存及磁盤告警:

內存

RabbitMQ內存閥值默認爲40%,能夠經過修改rabbitmq.conf文件(/etc/rabbitmq/rabbitmq.conf)來配置內存閥值。

# 內存閥值
[{rabbit, [{vm_memory_high_watermark, 0.4}]}]
# 內存閥值絕對值,單位B
[{rabbit, [{vm_memory_high_watermark, {absolute, 104857600}}]}]
# 內存閥值絕對值,自定義單位
[{rabbit, [{vm_memory_high_watermark, {absolute, "1000MB"}}]}]

固然你也能夠經過命令

# 對應rabbitmqctl命令(fraction對應配置中的0.4): rabbitmqctl set_vm_memory_high_watermark {fraction} # rabbitmqctl命令指定內存閾值絕對值 rabbitmqctl set_vm_memory_high_watermark absolute {memory_limit)

磁盤

# rabbitmq.config配置文件命令 [{rabbit, [{disk_free_limit, "1GB"}]}] # 設置磁盤閾值的絕對值 rabbitmqctl set_disk_free_limit {disk_limit} # 設置機器內存大小與磁盤閾值的比值 rabbitmqctl set_disk_free__limit_mem_relative {fraction}
相關文章
相關標籤/搜索