RabbitMQ服務端配置詳解


 

RabbitMQ支持三種配置方式:

  1) 讀取環境變量中配置, 這包括shell中環境變量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的環境變量

    可配置如端口、配置文件指定自定義位置、節點名字等信息。

  2) 讀取配置文件rabbitmq.config

    可配置權限、集群、插件設置等高級信息, 當然也可配置端口等簡單信息

  3) 通過運行命令時指定參數

    通常用來配置集群范圍信息, 用來運行時動態傳入

 

環境變量讀取優先級

  1) 讀取shell中環境變量

  2) 讀取rabbitmq-env.conf/rabbitmq-env-conf.bat中的

  3) 讀取默認的

 

rabbitmq-env.conf/rabbitmq-env-conf.bat 詳解(顏色標注的為常用配置)

變量名稱 默認值 描述
RABBITMQ_NODE_IP_ADDRESS 默認為空字符串, 即綁定所有網絡接口  如果想綁定到一個固定的IP可以使用此變量. 如果要綁定到兩個或兩個以上只能通過rabbitmq.config中的tcp_listeners來設置。
RABBITMQ_NODE_PORT 5672  供客戶端建立連接端口
RABBITMQ_DIST_PORT RABBITMQ_NODE_PORT + 20000  用於節點和CLI工具連接的端口, 如果rabbitmq.config中配置了kernel.inet_dist_listen_min 或 kernel.inet_dist_listen_max該參數將被忽略
RABBITMQ_NODENAME
  • Unix*: rabbit@$HOSTNAME
  • Windows: rabbit@%COMPUTERNAME%
 節點名字, 必須唯一
RABBITMQ_CONF_ENV_FILE
  • Generic UNIX - $RABBITMQ_HOME/etc/rabbitmq/
  • Debian - /etc/rabbitmq/
  • RPM - /etc/rabbitmq/
  • Mac OS X (Homebrew) - ${install_prefix}/etc/rabbitmq/, the Homebrew prefix is usually /usr/local
  • Windows - %APPDATA%\RabbitMQ\
 rabbitmq-env.conf/rabbitmq-env-conf.bat 默認位置, 不同系統不同安裝方式位置也不同, 如果默認位置沒找到則需在該位置手動創建一個
RABBITMQ_CONFIG_FILE

同上

rabbitmq.config 默認位置。 如果默認位置沒找到則需在該位置手動創建一個
RABBITMQ_USE_LONGNAME  官網沒說。。。。應該是false。。。

 取值: true 或 false。 

 如果配置為true, 這將導致RabbitMQ使用完全限定的名稱來標識節點

RABBITMQ_SERVICENAME Windows Service: RabbitMQ 服務名稱
RABBITMQ_CONSOLE_LOG 只在控制台輸出日志, 日志不會持久化到文件

取值: new 或 reuse。

兩種取值都是將控制台輸出從服務器重定向到名為%rabbitmqservicename%(上面那個變量)的文件。

  1)默認: 不設置, 控制台的日志不會被持久化到文件

  2)new: 每次啟動時都會創建一個新的文件

  3)reuse: 每次啟動服務器都會重用該日志文件

RABBITMQ_CTL_ERL_ARGS None 在調用rabbitmqctl時使用的erl命令的參數。應該僅用於調試目的。
RABBITMQ_SERVER_ERL_ARGS
  • Unix*:"+K true +A30 +P 1048576 -kernel inet_default_connect_options [{nodelay,true}]"
  • Windows: None
在調用RabbitMQ服務器時使用的erl命令的標准參數, 應該僅用於調試目的
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS
  • Unix*: None
  • Windows: None
在調用RabbitMQ服務器時使用的erl命令的附加參數。這個變量的值被附加到參數的默認列表(RABBITMQ_SERVER_ERL_ARGS).
RABBITMQ_SERVER_START_ARGS None 在調用RabbitMQ服務器時使用的erl命令的額外參數。這不會覆蓋RABBITMQ_SERVER_ERL_ARGS.
HOSTNAME
  • Unix, Linux: `env hostname`
  • MacOSX: `env hostname -s`
當前機器名稱
COMPUTERNAME Windows: localhost 當前機器名稱, windows使用該變量
ERLANG_SERVICE_MANAGER_PATH Windows Service:  %ERLANG_HOME%\erts-x.x.x\bin erlsrv.exe的路徑, erlsrv.exe這個是erlang服務的包裝腳本

 

rabbitmq.config詳解(核心配置)

該配置文件使用的是Erlang標准配置文件,語法請參照這里

例: 

  [
    {rabbit, [{tcp_listeners, [5673]}]}
  ].

 

key 描述
tcp_listeners 監聽AMQP連接的端口或主機/對。

Default: [5672]

num_tcp_acceptors Erlang進程的數量,接受TCP監聽器的連接數。

Default: 10

handshake_timeout 對AMQP 0-8/0-9/0-9-1握手的最大時間(在套接字連接和SSL握手之后),以毫秒為間隔

Default: 10000

ssl_listeners 如上所述,用於SSL連接。

Default: []

num_ssl_acceptors 用於接受SSL監聽連接的Erlang進程的數量。

Default: 1

ssl_options SSL配置參數. 詳情請看 SSL documentation.

Default: []

ssl_handshake_timeout SSL握手超時,以毫秒為間隔。

Default: 5000

vm_memory_high_watermark 觸發流控制的內存閾值。詳情請看 memory-based flow control.

Default: 0.4

vm_memory_high_watermark_paging_ratio 設置當內存使用超過總內存百分比多少時,隊列開始將消息持久化到磁盤以釋放內存。 詳情請看 memory-based flow control.

Default: 0.5

disk_free_limit RabbitMQ存儲數據的分區的磁盤空間限制。當可用的磁盤空間低於這個限制時,就會觸發流控制。值可以相對於RAM的總數設置(例如,內存比例,1.0)。該值也可以設置為整數的字節數。或者,單位(例如“50 mb”)。默認情況下,空閑磁盤空間必須超過50MB。詳情請看 Disk Alarms.

Default: 50000000

log_levels 控制日志的粒度。該值是一個日志事件類別和日志級別對的列表。

可設置級別:

  'none'

  'error'

  'warning'

  'info' 

  'debug' 

  以上下一層級別的日志輸出均包含上層級別日志輸出(如: warning包含warning和error), none為不輸出日志

 

另外,當前未分類的事件總是記錄在日志中

The categories are:

  • channel - 所有與AMQP通道有關的事件
  • connection - 對於所有與網絡連接有關的事件
  • federation - 對於所有與federation有關的事件
  • mirroring - 對於與鏡像隊列相關的所有事件

Default: [{connection, info}]

frame_max

框架最大允許大小(以字節為單位)與消費者進行數據交換。設置為0意味着“無限”,但會在一些QPid客戶端觸發一個bug。

設置更大的值可能會提高吞吐量;

設置較小的值可能會提高延遲。

Default: 131072

channel_max

與消費者進行談判的最大允許數量。設置為0意味着“無限”。

使用更多的通道會增加代理的內存占用。

Default: 0

channel_operation_timeout 通道操作超時為毫秒(內部使用,由於消息傳遞協議的差異和限制而不直接暴露於客戶機)。

Default: 15000

heartbeat

該值表示服務器在連接中發送的心跳延遲,在幾秒鍾內。優化框架。如果設置為0,則會禁用心跳。客戶端可能不會遵循服務器的建議,請參閱AMQP參考以了解更多細節。

在有大量連接的情況下,禁用心跳可能改善性能,但可能會導致連接在關閉非活動連接的網絡設備的出現。

Default: 60 (580 prior to release 3.5.5)

default_vhost 當RabbitMQ創建一個新的數據庫時,創建一個虛擬主機。交換amq.rabbitmq.logwill存在於這個虛擬主機中。

Default: <<"/">>

default_user 當RabbitMQ從頭創建一個新數據庫時,要創建用戶名。 

Default: <<"guest">>

default_pass 默認用戶的密碼。

Default: <<"guest">>

default_user_tags 默認用戶的標記。

Default: [administrator]

default_permissions 在創建時分配給默認用戶的權限。

Default:  [<<".*">>, <<".*">>, <<".*">>]

loopback_users

只允許通過環回接口連接到代理的用戶列表(即localhost)。 如果您希望允許缺省的來賓用戶遠程連接,則需要將其更改為 [].

Default:  [<<"guest">>]

cluster_nodes 當一個節點開始第一次啟動時,將它設置為使集群自動發生。元組的第一個元素是節點試圖集群到的節點。第二個元素是磁盤或ram,並確定節點類型。

Default: {[], disc}

server_properties 鍵值對的列表,在連接上向客戶端宣布。

Default: []

collect_statistics 統計數據收集模式。主要與管理插件有關。選項有:
  • none (不要發布統計數據)
  • coarse (發出每個隊列/每個通道/每個連接統計信息)
  • fine (發出的每條數據)
通常情況下不需要設置該參數

Default: none

collect_statistics_interval 統計數據收集間隔以毫秒為間隔。 主要相關插件 management plugin.

Default: 5000

management_db_cache_multiplier 管理插件將緩存諸如隊列清單之類的代價較高的查詢的時間。緩存將把最后一個查詢的運行時間乘以這個值,並在此時間內緩存結果。

Default: 5

auth_mechanisms SASL authentication mechanisms to offer to clients.

Default: ['PLAIN', 'AMQPLAIN']

auth_backends

List of authentication and authorisation backends to use.

Other databases than rabbit_auth_backend_internalare available through plugins.

Default: [rabbit_auth_backend_internal]

reverse_dns_lookups 設置為true,讓RabbitMQ對客戶端連接執行反向DNS查找,並通過rabbitmqctl和管理插件呈現該信息。

Default: false

delegate_count 用於集群內部通信的委托進程的數量。當為多核CPU時可以考慮設置該值

Default: 16

trace_vhosts Used internally by the tracer. 通常情況下不需要設置該參數

Default: []

tcp_listen_options 默認的套接字選項。通常情況下不需要設置該參數

Default:

[{backlog,       128},
 {nodelay,       true},
 {linger,        {true,0}}, {exit_on_close, false}] 

 

hipe_compile 設置為true,使用HiPE預編譯RabbitMQ的部分,這是Erlang的即時編譯器。這將增加服務器的吞吐量,以增加啟動時間的成本。

您可能會看到,在啟動時延遲幾分鍾,您的性能會提高20-50%。這些數據是高度工作負載和硬件依賴的。

HiPE支持可能不會編譯到您的Erlang安裝中。如果不是這樣,啟用這個選項只會導致一個警告消息被顯示,而啟動將照常進行。例如,Debian/Ubuntu用戶需要安裝erlangbase-base-hipe包。

HiPE在某些平台上是不可用的,尤其是Windows。

HiPE在17.5之前就已經知道了erlangp/otp版本的問題。HiPE推薦使用最新的erlangp/otp版本

Default: false

cluster_partition_handling 如何處理網絡分區。可用模式: 
  • ignore
  • pause_minority
  • {pause_if_all_down, [nodes], ignore | autoheal}
    (例: ['rabbit@node1', 'rabbit@node2'])
  • autoheal
詳情請看documentation on partitions

Default: ignore

cluster_keepalive_interval 節點應該多頻繁地將keepalive消息發送到其他節點(以毫秒為單位)。請注意,這與netticktime不一樣; 錯過的keepalive消息不會導致節點被認為掛機。

Default: 10000

queue_index_embed_msgs_below 在消息的字節數中,消息將被直接嵌入到隊列索引中。詳情請看 persister tuning

Default: 4096

msg_store_index_module 用於隊列索引的實現模塊。 詳情請看 persister tuning

Default: rabbit_msg_store_ets_index

backing_queue_module 隊列內容的實現模塊。通常情況下不需要設置該參數

Default: rabbit_variable_queue

msg_store_file_size_limit Tunable value for the persister.  通常情況下不需要設置該參數

Default: 16777216

mnesia_table_loading_retry_limit 在等待集群中的Mnesia tables可用時,需要重試的次數。

Default: 10

mnesia_table_loading_retry_timeout 在集群中等待每個重試的時間,以便可用

Default: 30000

queue_index_max_ journal_entries Tunable value for the persister.  通常情況下不需要設置該參數

Default: 65536

queue_master_locator

Queue master定位策略

可用策略:

  • <<"min-masters">>
  • <<"client-local">>
  • <<"random">>
詳情請看 documentation on queue master location

Default: <<"client-local">>

lazy_queue_explicit_gc_run_operation_threshold

調優: 只有在內存壓力下有延遲隊列時。

    這是觸發垃圾收集器和其他內存減少活動的閾值。一個低的值可以降低性能,一個高的值可以提高性能,但是會導致更高的內存消耗。通常情況下不需要設置該參數

Default: 1000

queue_explicit_gc_run_operation_threshold

調優: 在內存壓力較大時。

      這是觸發垃圾收集器和其他內存減少活動的閾值。一個低的值可以降低性能,一個高的值可以提高性能,但是會導致更高的內存消耗。通常情況下不需要設置該參數

Default: 1000


免責聲明!

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



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