一、內存控制:
vm_memory_high_watermark 該值為內存閾值,默認為0.4。意思為物理內存的40%。40%的內存並不是內存的最大的限制,它是一個發布的節制,當達到40%時Erlang會做GC。最壞的情況是使用內存80%。如果把該值配置為0,將關閉所有的publishing 。
rabbitmqctl set_vm_memory_high_watermark 0
Paging 內存閾值,該值為默認為0.5,該值為vm_memory_high_watermark的20%時,將把內存數據寫到磁盤。
如機器內存16G,當RABBITMQ占用內存1.28G(16*0.4*0.2)時把內存數據放到磁盤。
二、硬盤控制:
當RabbitMQ的磁盤空閑空間小於50M(默認),生產者將被BLOCK,
如果采用集群模式,磁盤節點空閑空間小於50M將導致其他節點的生產者都被block
可以通過disk_free_limit來對進行配置。
------------------------------------------------------------------\
可以修改rabbitmq-env.conf配置文件:
[{rabbit,[{vm_memory_high_watermark,0.6}]}].
或者設置成固定值:
[{rabbit,[{vm_memory_high_watermark,{absolute,1073741824}}]}].也就是1024MB.
如果要在broker運行過程中修改,則rabbitmqctl set_vm_memory_high_watermark 0.6
-------------------------------------------------\
三. 配置
/usr/local/rabbitmq/sbin目錄下
rabbitmq-env 環境配置
rabbitmq-defaults 默認參數設置
rabbitmqctl 管理工具
rabbitmq-plugins 插件管理工具
rabbitmq-server rabbitmq服務
# vim rabbitmq-defaults
1
2
3
4
5
6
7
8
9
10
|
SYS_PREFIX=${RABBITMQ_HOME}
ERL_DIR=/usr/local/erlang/bin/ //設置erl命令路徑
CLEAN_BOOT_FILE=start_clean
SASL_BOOT_FILE=start_sasl
CONFIG_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq //設置rabbitmq運行參數
LOG_BASE=${SYS_PREFIX}/var/log/rabbitmq
MNESIA_BASE=${SYS_PREFIX}/var/lib/rabbitmq/mnesia
ENABLED_PLUGINS_FILE=${SYS_PREFIX}/etc/rabbitmq/enabled_plugins //允許插件列表配置文件
PLUGINS_DIR="${RABBITMQ_HOME}/plugins"
CONF_ENV_FILE=${SYS_PREFIX}/etc/rabbitmq/rabbitmq-env.conf
|
主要配置文件
1. enabled_plugins:設置允許的插件列表,格式如下:
1
2
3
4
5
|
[rabbitmq_jsonrpc_channel,
rabbitmq_jsonrpc_channel_examples,
rabbitmq_management,
rabbitmq_management_visualiser,
rabbitmq_tracing].
|
2. rabbitmq.config:設置rabbitmq運行參數。結構為hash數組格式。如
1
2
3
4
5
6
7
8
9
|
[
{mnesia, [{dump_log_write_threshold, 1000}]},
{rabbit, [{vm_memory_high_watermark, 0.4}]}
{rabbitmq_management,
[{listener, [{port, 55673},
{ip, "0.0.0.0"}
]}
]}
].
|
其中幾個關鍵參數為:
tcp_listerners 設置rabbimq的監聽端口,默認為[5672]。
disk_free_limit 磁盤低水位線,若磁盤容量低於指定值則停止接收數據,默認值為{mem_relative, 1.0},即與內存相關聯1:1,也可定制為多少byte.
vm_memory_high_watermark,設置內存低水位線,若低於該水位線,則開啟流控機制,默認值是0.4,即內存總量的40%。
hipe_compile 將部分rabbimq代碼用High Performance Erlang compiler編譯,可提升性能,該參數是實驗性,若出現erlang vm segfaults,應關掉。
force_fine_statistics, 該參數屬於rabbimq_management,若為true則進行精細化的統計,但會影響性能。
/usr/local/etc/rabbitmq/rabbitmq.config
[{auth_backends,[rabbit_auth_backend_internal]},
{auth_mechanisms,['PLAIN','AMQPLAIN']},
{backing_queue_module,rabbit_variable_queue},
{cluster_nodes,[]},
{collect_statistics,fine},
{collect_statistics_interval,5000},
{default_permissions,[<<".*">>,<<".*">>,<<".*">>]},
{default_user,<<"guest">>},
{default_user_tags,[administrator]},
{default_vhost,<<"/">>},
{delegate_count,16},
{error_logger,{file,"/usr/local/var/log/rabbitmq/rabbit@Technophiliac.log"}},
{frame_max,131072},
{hipe_compile,false},
{included_applications,[]},
{msg_store_file_size_limit,16777216},
{msg_store_index_module,rabbit_msg_store_ets_index},
{queue_index_max_journal_entries,262144},
{sasl_error_logger,{file,"/usr/local/var/log/rabbitmq/rabbit@Technophiliac-sasl.log"}},
{server_properties,[]},
{ssl_listeners,[]},
{ssl_options,[]},
{tcp_listen_options,
[binary,
{packet,raw},
{reuseaddr,true},
{backlog,128},
{nodelay,true},
{exit_on_close,false}]},
{tcp_listeners,[5672]},
{trace_vhosts,[<<"/">>]},
{vm_memory_high_watermark,0.4}]
3. rabbitmq-env.conf rabbitmq環境參數配置
1
2
3
4
5
6
|
RABBITMQ_NODENAME=FZTEC-240088 節點名稱
RABBITMQ_NODE_IP_ADDRESS=127.0.0.1 監聽IP
RABBITMQ_NODE_PORT=5672 監聽端口
RABBITMQ_LOG_BASE=/data/rabbitmq/log 日志目錄
RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins 插件目錄
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia 后端存儲目錄
|
更詳細的配置參見: http://www.rabbitmq.com/configure.html#configuration-file
4. 啟動
1
|
# /usr/local/rabbitmq/sbin/rabbitmq-server -detached
|
四. rabbitmq插件管理
啟用rabbitmq web管理插件
1
|
# ./rabbitmq-plugins enable rabbitmq_management
|
列出所有插件
1
|
# ./rabbitmq-plugins list
|