RabbitMQ服務端配置詳解

 

RabbitMQ支持三種配置方式:html

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

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

  2) 讀取配置文件rabbitmq.config數據庫

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

  3) 經過運行命令時指定參數緩存

    一般用來配置集羣範圍信息, 用來運行時動態傳入服務器

 

環境變量讀取優先級網絡

  1) 讀取shell中環境變量框架

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

  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

相關文章
相關標籤/搜索