在* nix系统上配置RabbitMQ
配置环境
RabbitMQ在/etc/rabbitmq/rabbitmq-env.conf中查找一组环境变量。 如果不存在,则采用默认值。 rabbitmq-env.conf中的所有值都将导出到RabbitMQ服务器以RABBITMQ_前缀运行的环境中; 此前缀不包括在配置文件中。 可以设置以下变量(在key = value语法中):
NODENAME:设置RabbitMQ节点的名称。
CONFIG_FILE:设置RabbitMQ配置文件的位置(不是此环境文件)
NODE_IP_ADDRESS:设置要侦听的特定IP地址。
NODE_PORT:设置要侦听的端口
DIST_PORT:设置侦听的端口进行群集
USE_LONGNAME:指示是否使用完全限定名称来标识节点的布尔值。 在具有相同短名称的环境中有用。
CTL_ERL_ARGS:设置运行rabbitmqctl时调用的erl命令的参数。 用于调试。
SERVER_ERL_ARGS:设置启动RabbitMQ时调用的erl命令的参数。 设置此值将覆盖默认值(请参阅下面的示例配置)。
SERVER_ADDITIONAL_ERL_ARGS:为启动RabbitMQ时调用的erl命令设置其他参数。 设置此值将附加到SERVER_ERL_ARGS变量,默认情况下为空。
SERVER_START_ARGS:也为在启动RabbitMQ时调用的erl命令设置。
示例配置文件(所有值实际上都是默认值):
|
|
配置RabbitMQ
注意:RabbitMQ的配置文件是标准的Erlang配置语法。 如果你不熟悉Erlang,这可能会令人头疼。 它遵循以下格式:
|
|
RabbitMQ的配置部分有以下keys (摘自https://www.rabbitmq.com/configure.html):
tcp_listeners:要侦听AMQP连接(不使用SSL)的端口列表。 可以包含整数(意为“侦听所有接口”)或元组(如{“127.0.0.1”,5672})以监听一个或多个接口。默认值:[5672]
num_tcp_acceptors:将接受TCP侦听器连接的Erlang进程数。默认值:10
handshake_timeout:AMQP 0-8 / 0-9 / 0-9-1握手(套接字连接和SSL握手后)的最长时间,以毫秒为单位。默认值:10000
ssl_listeners:如上,用于SSL连接。默认值:[]
num_ssl_acceptors:将接受SSL侦听器连接的Erlang进程数。默认值:1
ssl_options:SSL配置。默认值:[]
ssl_handshake_timeout:SSL握手超时,以毫秒为单位。默认值:5000
vm_memory_high_watermark:触发流量控制的内存阈值。 请参阅基于内存的流控制文档。默认值:0.4
vm_memory_high_watermark_paging_ratio:队列开始将消息页面输出到磁盘以释放内存的高水位限制的分数。 请参阅基于内存的流控制文档。默认值:0.5
disk_free_limit:RabbitMQ用于存储数据的分区的磁盘可用空间限制。 当可用磁盘空间低于此限制时,触发流量控制。 该值可以相对于RAM的总量(例如{mem_relative,1.0})来设置。 该值也可以设置为整数字节。 或者,在信息单元(例如“50MB”)中。 默认情况下,可用磁盘空间必须超过50MB。 请参见Disk Alarms文档。默认值:50000000
log_levels:控制日志记录的粒度。 该值是日志事件类别和日志级别对的列表。级别可以是
none(无事件记录),error(仅记录错误),warning(仅记录错误和警告),info(错误,警告和信息性消息被记录)或debug(错误,警告 ,信息消息和调试消息被记录)。目前定义有四类。另外,目前其他类别的,events总是记录。
类别:
- channel - 所有与AMQP通道相关的事件
- connection - 用于所有与网络连接相关的事件
- federation - 所有与联盟有关的事件
- mirroring - 所有与镜像队列相关的事件
默认:
[{connection, info}]
frame_max:与客户端协商的帧的最大允许大小(以字节为单位)。 设置为0意味着“无限制”,但会在一些QPid客户端触发一个错误。 设置较大的值可以提高吞吐量; 设置较小的值可以改善等待时间。默认值:
131072channel_max:与客户端协商的最大允许通道数。 设置为0表示“无限制”。 使用更多的通道增加了代理的内存占用。默认值:
0channel_operation_timeout:通道操作超时(以毫秒为单位)(由于消息传递协议差异和限制,内部使用,不直接暴露给客户端)。默认值:
15000heartbeat:表示服务器在connection.tune帧中发送的heartbeat 延迟(以秒为单位)的值。 如果设置为0,心跳将被禁用。 客户端可能不遵循服务器建议,有关详细信息,请参阅AMQP参考。 禁用检测信号可能会提高具有大量连接的情况下的性能,但可能会导致在关闭非活动连接的网络设备存在时连接断开。默认值:
60(版本3.5.5之前的580)default_vhost:当RabbitMQ从头开始创建新数据库时要创建的虚拟主机。 交换amq.rabbitmq.log将存在于此虚拟主机中。默认值:
<<“/”>>default_user:当RabbitMQ从头开始创建新数据库时要创建的用户名。默认值:
<<“guest”>>default_pass:默认用户的密码。默认值:
<<“guest”>>default_user_tags:默认用户的标签。默认值:
[administrator]default_permissions:在创建默认用户时分配给它的权限。默认值:
[<<".*">>, <<".*">>, <<".*">>]loopback_users:只允许通过回送接口(即localhost)连接到代理的用户列表。如果你希望允许默认的访客用户远程连接,您需要将其更改为
[]。默认值:
[<<“guest”>>]cluster_nodes:设置此选项,以便在节点第一次启动时自动执行群集。 元组的第一个元素是节点将尝试集群到的节点。 第二个元素是disc或ram并确定节点类型。默认值:
{[], disc}server_properties:在连接时向客户端通知的键值对列表。
默认值:[]
collect_statistics:统计信息收集模式。 主要与管理插件相关。 选项包括:
- none(不发出统计信息事件)
- coarse(每队列发射/每通道/每连接统计)
- fine(也发射每消息统计)
你可能不想自己改变这个。
默认值:none
collect_statistics_interval:统计信息收集间隔(以毫秒为单位)。 主要与管理插件相关。默认值:
5000auth_mechanisms:向客户端提供的SASL认证机制。默认值:
['PLAIN','AMQPLAIN']auth_backends:要使用的身份验证/授权后端列表。 该列表可以包含模块的名称(在这种情况下,相同的模块用于认证和授权)或2元组,如{ModN,ModZ},在这种情况下,ModN用于认证,ModZ用于授权。在2-tuple情况下,ModZ可以由列表替换,其中所有元素必须确认每个授权查询,例如,
{ModN,[ModZ1,ModZ2]}。 这允许授权插件混合并提供额外的安全限制。除了
rabbit_auth_backend_internal之外的其他数据库可通过插件使用。默认值:
[rabbit_auth_backend_internal]
reverse_dns_lookups:设置为true以使RabbitMQ在客户端连接上执行反向DNS查找,并通过rabbitmqctl和管理插件提供该信息。默认值:
falsedelegate_count:用于集群内通信的委派进程数。 在具有大量核心并且也是集群的一部分的机器上,您可能希望增加此值。默认值:
16trace_vhosts:跟踪器在内部使用。 你不应该改变这个。默认值:
[]tcp_listen_options:默认套接字选项。 你可能不想改变这个。默认:
|
|
hipe_compile:设置为true以使用HiPE预先编译RabbitMQ的部分,HiPE是Erlang的即时编译器。 这将以增加启动时间为代价增加服务器吞吐量。您可能会看到20-50%的性能提高,但是在启动时延迟几分钟。 这些数字是高度工作负载和硬件相关的。
HiPE支持可能不会编译到您的Erlang安装。 如果不是,启用此选项将仅显示警告消息,并且启动将正常进行。 例如,Debian / Ubuntu用户需要安装
erlang-base-hipe包。HiPE在某些平台上不可用,尤其包括Windows。
HiPE在17.5之前的Erlang / OTP版本中存在已知问题。 强烈建议对HiPE使用最近的Erlang / OTP版本。
默认值:
false
cluster_partition_handling:如何处理网络分区。 可用模式有:ignorepause_minority{pause_if_all_down,[nodes], ignore| autoheal}其中[nodes]是节点名称列表(例如:['rabbit @ node1','rabbit @ node2'])autoheal
有关更多信息,请参阅分区文档。
默认值:
ignorecluster_keepalive_interval:节点应如何频繁地向其他节点发送keepalive消息(以毫秒为单位)。 注意这和net_ticktime不一样; 错过保持活动消息不会导致节点被视为失败。默认:
10000queue_index_embed_msgs_below:消息以字节为单位的大小,在该消息之下,消息将直接嵌入队列索引中。 建议您在更改之前阅读持久性调优文档。默认值:
4096msg_store_index_module:用于队列索引的实现模块。 建议您在更改之前阅读持久性调优文档。默认值:
rabbit_msg_store_ets_indexbacking_queue_module:队列内容的实现模块。 你可能不想改变这个。默认值:
rabbit_variable_queuemsg_store_file_size_limit:持久性的可调参数值。 你几乎肯定不应该改变这个。默认值:
16777216mnesia_table_loading_timeout:等待群集中的Mnesia表变为可用时使用的超时。默认值:
30000queue_index_max_journal_entries:持久性的可调参数值。 你几乎肯定不应该改变这个。默认值:
65536queue_master_locator:队列主机位置策略。 可用的策略有:<<“min-masters”>><<“client-local”>><<“random”>>
有关详细信息,请参阅队列主机位置的文档。
默认值:
<<“client-local”>>
