Rabbitmq - 配置
目錄
- RabbitMQ 配置
- 簡介
- 環境變量
- 配置文件
- 運行時參數和策略
RabbitMQ 配置
簡介
默認配置,已經可以有效地運行RabbitMQ,并且在大多數情況下不需要更改配置。不過為了在生產環境中穩定、高效的運行,RabbitMQ提供了三種方式來定制化服務
- 環境變量
- 配置文件
- 運行時參數和策略
配置文件路徑可以再啟動日志中找到
期待的配置文件路徑
文件不存在可以手動創建
- Generic UNIX: $RABBITMQ_HOME/etc/rabbitmq/
- RPM: /etc/rabbitmq/
- Windows: %APPDATA%\RabbitMQ
如何檢查生效的配置項
[root@node1 rabbitmq]# rabbitmqctl environment環境變量
RabbitMQ的環境變量都是以"RABBITMQ_"開頭的,可以再shell環境中設置,也可以在rabbitmq-env.conf配置文件中設置。
如果在非shell環境中設置需要將“RABBITMQ_”去掉。
配置優先級
rabbitmq-env.conf默認在$RABBITMQ_HOME/etc/rabbitmq/目錄下,也可以在啟動時指定RABBITMQ_CONF_ENV_FILE變量來設置此文件的路徑
# Example rabbitmq-env.conf file entries. Note that the variables # do not have the RABBITMQ_ prefix. # # Overrides node name NODENAME=root@node1# Specifies new style config file location CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf# Specifies advanced config file location ADVANCED_CONFIG_FILE=/etc/rabbitmq/advanced.config| RABBITMQ_NODE_IP_ADDRESS | 綁定的網絡接口 | 默認為空字符串表示綁定本機所有的網絡接口 |
| RABBITMQ_NODE_PORT | 5672 | |
| RABBITMQ_DIST_PORT | RabbitMQ節點內部通信的端口號。如果設置了kernel.inet_dist_listen_min or kernel.inet_dist_listen_max時,此環境變量將被忽略 | RABBITMQ_NODE_PORT + 20000 |
| RABBITMQ_DISTRIBUTION_BUFFER_SIZE | 節點之間通信連接的數據緩沖區大小 | 默認為128000,該值建議不要使用低于64MB |
| RABBITMQ_IO_THREAD_POOL_SIZE | 運行時用于io的線程數 | 建議不要低于32,linux默認為128 ,windows默認為64 |
| RABBITMQ_NODENAME | rabbitmq節點名稱,集群中要注意節點名稱唯一 | linux 默認節點名為 rabbit@$hostname |
| RABBITMQ_CONFIG_FILE | rabbitmq 的配置文件路徑,注意不要加文件的后綴(.conf) | 默認 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq(二進制安裝) /etc/rabbitmq/rabbitmq(rpm 安裝) |
| RABBITMQ_ADVANCED_CONFIG_FILE | advanced.config文件路徑 | 默認 $RABBITMQ_HOME/etc/rabbitmq/advanced(二進制安裝) /etc/rabbitmq/advanced(rpm 安裝) |
| RABBITMQ_CONF_ENV_FILE | 環境變量配置文件路徑 | 默認 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf(二進制安裝) /etc/rabbitmq/rabbitmq-env.conf(rpm 安裝) |
| RABBITMQ_USE_LONGNAME | ||
| RABBITMQ_SERVICENAME |
配置文件
在RabbitMQ3.7.0Z之前,RabbitMQ配置文件被命名為rabbitmq.config,并使用Erlang語法配置。
運行3.7.0或更高版本仍然支持之前的配置,但建議使用新的sysctl格式。
sysctl格式與erlang格式配置文件對比
sysctl 格式ssl_options.cacertfile = /path/to/testca/cacert.pem ssl_options.certfile = /path/to/server_certificate.pem ssl_options.keyfile = /path/to/server_key.pem ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = true Erlang 格式 [{rabbit, [{ssl_options, [{cacertfile, "/path/to/testca/cacert.pem"},{certfile, "/path/to/server_certificate.pem"},{keyfile, "/path/to/server_key.pem"},{verify, verify_peer},{fail_if_no_peer_cert, true}]}]} ].- sysctl 格式易于自動化部署工具生成和人類編輯
- 相對于Erlang格式 有局限。一些使用深度嵌套的數據結構仍然需要Erlang格式的支持
rabbitmq.conf
- key/value 鍵值對結構
- 以#開頭的為注釋行
- rabbitmq.conf 示例
| listeners | 要監聽 AMQP 0-9-1 and AMQP 1.0 的端口 | listeners.tcp.default = 5672 |
| num_acceptors.tcp | 接受tcp連接的erlang 進程數 | num_acceptors.tcp = 10 |
| handshake_timeout | AMQP 0-9-1 超時時間,也就是最大的連接時間,單位毫秒 | handshake_timeout = 10000 |
| listeners.ssl | 啟用TLS的協議 | 默認值為none |
| num_acceptors.ssl | 接受基于TLS協議的連接的erlang 進程數 | num_acceptors.ssl = 10 |
| ssl_options | TLS 配置 | ssl_options =none |
| ssl_handshake_timeout | TLS 連接超時時間 單位為毫秒 | ssl_handshake_timeout = 5000 |
| vm_memory_high_watermark | 觸發流量控制的內存閾值,可以為相對值(0.5),或者絕對值 vm_memory_high_watermark.relative = 0.6 ,vm_memory_high_watermark.absolute = 2GB | 默認vm_memory_high_watermark.relative = 0.4 |
| vm_memory_calculation_strategy | 內存使用報告策略,assigned:使用Erlang內存分配器統計信息 rss:使用操作系統RSS內存報告。這使用特定于操作系統的方法,并可能啟動短期子進程。 legacy:使用遺留內存報告(運行時認為將使用多少內存)。這種策略相當不準確。erlang 與legacy一樣 是為了向后兼容 | vm_memory_calculation_strategy = allocated |
| vm_memory_high_watermark_paging_ratio | 內存高水位百分比閾值,當內存的使用達到閾值時,隊列開始將消息分頁到磁盤以釋放內存 | vm_memory_high_watermark_paging_ratio = 0.5 |
| total_memory_available_override_value | 該參數用于指定系統的可用內存總量,一般不使用,適用于在容器等一些獲取內存實際值不精確的環境(獲取內存值與實際內存值相差較大) | 默認未設置 |
| disk_free_limit | 存儲數據分區的可用磁盤空間限制當可用空間低于閾值時,流控將被觸發。 | disk_free_limit.absolute = 50MB |
| log.file.level | 控制記錄日志的等級,有info,error,warning,debug | log.file.level = info |
| channel_max | 最大通道數,但不包含協議中使用的特殊通道號0,設置為0表示無限制,不建議使用該值,容易出現channel泄漏,過多的channel會增加broker內存的占用 | channel_max = 2047 |
| channel_operation_timeout | 通道操作超時,單位為毫秒 | channel_operation_timeout = 15000 |
| heartbeat | 表示連接參數協商期間服務器建議的心跳超時的值。如果兩端都設置為0,則禁用心跳,不建議禁用 | heartbeat = 60 |
| default_vhost | rabbitmq安裝后啟動創建的虛擬主機 | default_vhost = / |
| default_user | 默認創建的用戶名 | default_user = guest |
| default_pass | 默認用戶的密碼 | default_pass = guest |
| default_user_tags | 默認用戶的角色 | default_user_tags.administrator = true |
| default_permissions | 創建默認用戶時分配的權限 | default_permissions.configure = .* default_permissions.read = .* default_permissions.write = .* |
| loopback_users | 允許通過回環地址連接到rabbitmq的用戶列表,如果要允許guest用戶遠程連接(不安全)請將該值設置為none,如果要將一個用戶設置為僅localhost連接的話,配置loopback_users.username =true(username要替換成用戶名) 限制用戶只能本地連接loopback_users.monitoring = true monitoring是用戶名 | loopback_users.guest = true(默認guest只能本地連接) |
| cluster_formation.classic_config.nodes | 配置集群節點 cluster_formation.classic_config.nodes.1 = rabbit@hostname1 cluster_formation.classic_config.nodes.2 = rabbit@hostname2 | 默認none |
| collect_statistics | 統計數據的收集模式,主要與 RabbitMQ Management插件相關, none: 不發出統計信息事件 coarse: 每個隊列連接都發送統計一次 fine: 每發一條消息的統計數據 | collect_statistics = none |
| collect_statistics_interval | 統計數據收集時間間隔,以毫秒為單位 | collect_statistics_interval = 5000 |
| management_db_cache_multiplier | 緩存代價較高的查詢 緩存將把最后一個查詢的運行時間乘以這個值,并在此時間內緩存結果。 | management_db_cache_multiplier = 5 |
| reverse_dns_lookups | 設置為' true ',讓RabbitMQ對客戶端連接執行反向DNS查詢,并通過' rabbitmqctl '和管理插件顯示該信息。 | reverse_dns_lookups = false |
| delegate_count | 用于集群內通信的委托進程數。在多核的服務器上我們可以增加此值 | delegate_count = 16 |
| tcp_listen_options | 默認的套接字選項 | tcp_listen_options.backlog = 128 tcp_listen_options.nodelay = true tcp_listen_options.linger.on = true tcp_listen_options.linger.timeout = 0 tcp_listen_options.exit_on_close = false |
| hipe_compile | 設置為true以使用HiPE預編譯RabbitMQ的部分,HiPE是Erlang的即時編譯器,啟用HiPE可以提高吞吐,但啟動時會延遲幾分鐘。Erlang運行時必須包含HiPE支持。如果不是,啟用此選項將不起作用。HiPE在某些平臺上根本不可用,尤其是Windows。 | hipe_compile = false |
| cluster_partition_handling | 如何處理網絡分區。有四種方式 ignore、autoheal、pause_minority、pause_if_all_down 。 pause_if_all_down模式需要額外的參數:nodes、recover | cluster_partition_handling = ignore |
| cluster_keepalive_interval | 向其他節點發送存活消息的頻率。單位為毫秒。丟失存活消息不會導致節點被認為已失效 | cluster_keepalive_interval = 10000 |
| queue_index_embed_msgs_below | 消息的字節大小,小于該大小,消息將直接嵌入隊列索引中 單位為B | queue_index_embed_msgs_below = 4096 |
| mnesia_table_loading_retry_timeout | 等待集群中Mnesia表可用的超時時間,單位毫秒 | mnesia_table_loading_retry_timeout = 30000 |
| mnesia_table_loading_retry_limit | 集群啟動時等待Mnesia表的重試次數,不適用于Mnesia升級或節點刪除 | mnesia_table_loading_retry_limit = 10 |
| mirroring_sync_batch_size | 要在隊列鏡像之間同步的消息的批處理大小 | mirroring_sync_batch_size = 4096 |
| queue_master_locator | 隊列的定位的策略,即創建隊列時以什么策略判斷坐落的broker節點。如果配置了鏡像,則這里指master鏡像的定位策略。可用的策略 min-masters,client-local,random | queue_master_locator = client-local |
| proxy_protocol | 如果設置為true ,則連接需要通過反向代理連接,不能直連接 | proxy_protocol = false |
advanced.config
一些不能使用sysctl格式的配置項或者使用sysctl格式不方便的配置項,可以使用Erlang術語格式的配置文件
- advanced.config 示例
| msg_store_index_module | 設置隊列索引使用的模塊 | 消息存儲調優 Default: rabbit_msg_store_ets_index {rabbit,[{msg_store_index_module, rabbit_msg_store_ets_index}]} |
| backing_queue_module | 隊列內容的實現模塊。 | {rabbit, [{backing_queue_module, rabbit_variable_queue}]} |
| msg_store_file_size_limit | 消息儲存的文件大小,現有的節點更改是危險的,可能導致數據丟失 | Default: 16777216 {rabbit, [ %% Changing this for a node %% with an existing (initialised) database is dangerous can %% lead to data loss! {msg_store_file_size_limit, 16777216} ]} |
| trace_vhosts | 內部的tracer使用,不建議更改 | {rabbit, [ {trace_vhosts, []} ]} |
| msg_store_credit_disc_bound | 設置消息儲存庫給隊列進程的積分,默認一個隊列進程被賦予4000個消息積分 | {rabbit, [ {msg_store_credit_disc_bound, {4000, 800}} ]} |
| queue_index_max_journal_entries | 隊列的索引日志超過該閾值將刷新到磁盤 | {rabbit, [ {queue_index_max_journal_entries, 32768} ]} |
| lazy_queue_explicit_gc_run_operation_threshold | 在使用惰性隊列(lazy queue)時進行內存回收動作的閾值。值底性能降低,值高性能提高,但是會導致更高的內存消耗。 | {rabbit, [ {lazy_queue_explicit_gc_run_operation_threshold, 1000} ]} |
| queue_explicit_gc_run_operation_threshold | 在使用正常隊列時進行內存回收動作的閾值。值低降低性能,值高性能提高,但是會消耗更多的內存。 | {rabbit, [ {queue_explicit_gc_run_operation_threshold, 1000} ]} |
運行時參數和策略
rabbitmq中大部分配置都可以在配置文件中完成,重啟后生效,但有些配置不適合寫在配置文件中
比如:有些需要更改需要立即生效
Parameter可以通過rabbitmqctl或者管理插件提供的HTTP API來設置。
Parameter分為兩種
- vhost級別
- 綁定到vhost。由組件名稱(component name)、名稱(name)和值組成
- global級別
- 不綁定vhost,全局生效。由名稱和值組成
未完待續
參考
?RabbitMQ官網 https://www.rabbitmq.com/
《RabbitMQ實戰指南》
?RabbitMQ生產部署指南 https://www.cnblogs.com/operationhome/p/10483840.html
轉載于:https://www.cnblogs.com/mldblue/articles/10939276.html
總結
以上是生活随笔為你收集整理的Rabbitmq - 配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫521错误(又是一次和可爱的前端vs
- 下一篇: NTC3950-10K温度传感器