RabbitMQ 内存控制 硬盘控制 | 您所在的位置:网站首页 › zen内存控制器 › RabbitMQ 内存控制 硬盘控制 |
一、内存控制: 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,}, {default_user_tags,[administrator]}, {default_vhost,}, {delegate_count,16}, {error_logger,{file,"/usr/local/var/log/rabbitmq/[email protected]"}}, {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/[email protected]"}}, {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 |
CopyRight 2018-2019 实验室设备网 版权所有 |