RabbitMq入门到精通-Config配置详解


RabbitMQ带有默认的内置设置。在某些环境(例如开发和质量检查)中,这些可能就足够了。对于所有其他情况以及生产部署调整,有一种方法可以在代理和插件中配置很多东西。

本指南涵盖了许多与配置相关的主题:

和更多。

由于配置会影响系统的许多区域,包括插件,因此各个文档指南会 更深入地介绍可配置的内容。运行时调优是本指南的附带内容,它侧重于运行时中的可配置参数。生产清单是相关的指南,概述了在大多数生产环境中可能需要调整哪些设置。

配置方式

可以使用负责不同区域的多种机制来配置RabbitMQ节点:

配置方式RabbitMQ
机制描述
配置文件包含以下服务器和插件设置 等等。
环境变量定义节点名称,文件和目录位置,从外壳获取的运行时标志,或在环境配置文件rabbitmq-env.conf(Linux,MacOS,BSD)和rabbitmq-env-conf.bat(Windows)中设置
兔子使用内部身份验证/授权后端时, rabbitmqctl是管理虚拟主机,用户和权限的工具。它还用于管理运行时参数和策略
RabbitMQ队列rabbitmq-queues是管理特定于仲裁队列的设置的工具。
Rabbitmq插件rabbitmq-plugins是管理插件的工具。
RabbitMQ诊断rabbitmq-diagnostics允许检查节点状态,包括有效配置以及许多其他指标和运行状况检查
参数与政策定义了可以在运行时更改的群集范围的设置,以及可以方便地为队列组(交换等)配置的设置,例如包括可选的队列参数。
运行时(Erlang VM)标志控制系统的低级方面:内存分配设置,节点间通信缓冲区大小,运行时调度程序设置等。
操作系统内核限制内核强制执行的控制进程限制:最大打开文件句柄限制,最大进程和内核线程数,最大驻留集大小等。

大多数设置是使用前两种方法配置的。因此,本指南重点介绍它们。

配置文件

介绍

虽然RabbitMQ中的某些设置可以使用环境变量进行调整,但大多数设置是使用主配置文件(通常名为Rabbitmq.conf)进行配置的。这包括核心服务器和插件的配置。可以使用其他配置文件来配置无法以主文件的配置格式表示的设置。这将在下面更详细地介绍。

下面的部分介绍了这两个文件的语法和位置,在何处可以找到示例等。

配置文件位置

默认配置文件位置 因操作系统和程序包类型而异。

本指南的其余部分将更详细地介绍该主题。

如果对操作系统和安装方法的RabbitMQ配置文件位置有疑问,请按照以下部分中的说明查阅日志文件和/或管理UI。

验证配置:如何查找配置文件位置

可以通过检查RabbitMQ日志文件来验证活动的配置文件。它将 与其他代理启动日志条目一起显示在顶部的日志文件中。例如:

<span style="color:#e6e1dc">节点:rabbit @ example
主目录:/ var / lib / rabbitmq
配置文件:/etc/rabbitmq/advanced.config
               :/etc/rabbitmq/rabbitmq.conf
</span>

如果RabbitMQ无法找到或读取配置文件,则日志条目将显示为:

<span style="color:#e6e1dc">节点:rabbit @ example
主目录:/ var / lib / rabbitmq
配置文件:/var/lib/rabbitmq/hare.conf(未找到)
</span>

另外,可以在管理UI中找到配置文件的位置以及有关节点的其他详细信息。

对配置设置进行故障排除时,在检查有效的节点配置之前,验证配置文件路径正确,存在并且可以加载(例如文件可读)非常有用。

验证配置:如何检查有效配置

可以使用rabbitmqctl环境命令打印有效的配置(用户提供的值合并为默认值)。它将为节点上运行的每个应用程序(RabbitMQ,插件,库)打印应用的配置。

有效配置应与配置文件位置一起验证(请参见上文)。这是解决各种问题的有用步骤。

新旧配置文件格式

所有受支持的RabbitMQ版本 的主配置文件都使用类似ini的sysctl配置文件格式。该文件通常命名为Rabbitmq.conf

新的配置格式更简单,更易于人类阅读和机器生成。与RabbitMQ 3.7.0之前使用的经典配置格式相比,它也相对有限。例如,在配置LDAP支持时,可能有必要使用深度嵌套的数据结构来表达所需的配置。

为了满足这种需求,现代RabbitMQ版本允许两种格式同时在单独的文件中使用:rabbitmq.conf使用新的样式格式,建议用于大多数设置,而advanced.config涵盖了ini-样式配置无法表达。以下各节将对此进行详细介绍。

配置文件使用格式目的
rabbitmq.conf新样式格式(sysctl或类似ini的格式)主配置文件。应该用于大多数设置。对于人类来说,阅读和机器(部署工具)的生成更容易。并非所有设置都可以这种格式表示。
advanced.config经典(Erlang术语)不能以新样式配置格式表示的有限数量的设置,例如LDAP查询。仅在必要时使用。
rabbitmq-env.conf(在Windows上为rabbitmq-env.conf.bat环境变量对用于在一处设置与RabbitMQ相关的环境变量

比较此示例rabbitmq.conf文件

<span style="color:#e6e1dc"><span style="color:#bc9458"><em>#一个新的样式格式代码段。rabbitmq.conf文件使用此格式。</em></span>
<span style="color:#6d9cbe">ssl_options.cacertfile</span>            = /path/to/ca_certificate.pem
 <span style="color:#6d9cbe">ssl_options.certfile</span>              = /path/to/server_certificate.pem
 <span style="color:#6d9cbe">ssl_options.keyfile</span>               = /path/to/server_key.pem
 <span style="color:#6d9cbe">ssl_options.verify</span>                = verify_peer
 <span style="color:#6d9cbe">ssl_options.fail_if_no_peer_cert</span> = 真
</span>

<span style="color:#e6e1dc"><span style="color:#bc9458"><em>%%经典格式的代码段,现在由advanced.config文件使用。</em></span>
[
  {兔子,[{ssl_options,[{cacertfile,<span style="color:#a5c261">“ / path /</span> to <span style="color:#a5c261">/</span> ca_certificate.pem            <span style="color:#a5c261">”</span> }},
                           {certfile,<span style="color:#a5c261">“ / path /</span> to <span style="color:#a5c261">/</span> server_certificate.pem              <span style="color:#a5c261">”</span> },
                           {keyfile,               <span style="color:#a5c261">“ /path/to/server_key.pem”</span> },
                           {verify,verify_peer},
                           {fail_if_no_peer_cert,true}]}]}
]。
</span>

主配置文件rabbitmq.conf

配置文件Rabbitmq.conf 允许配置RabbitMQ服务器和插件。从RabbitMQ 3.7.0开始,格式为sysctl格式

语法可以在3行中简要说明:

  • 一种设置用一行
  • 行结构化键=值
  • 字符开头的任何行都是注释

一个简单的示例配置文件如下:

<span style="color:#e6e1dc"><span style="color:#bc9458"><em>#这是一条注释</em></span>
<span style="color:#6d9cbe">listeners.tcp.default</span> = <span style="color:#a5c261">5673</span>
</span>

经典配置格式中的相同示例:

<span style="color:#e6e1dc">[
  {兔子, [
      {tcp_listeners,[ <span style="color:#a5c261">5673</span> ]}
    ]
  }
]。
</span>

本示例将将RabbitMQ侦听 AMQP 0-9-1和AMQP 1.0客户端连接的端口从5672更改为5673。

RabbitMQ服务器源存储库包含一个 名为Rabbitmq.conf.example 的示例Rabbitmq.conf文件。它包含您可能要设置的大多数配置项目的示例(省略了一些非常晦涩的项目),以及有关这些设置的文档。

诸如NetworkingTLS或 Access Control之类的文档指南包含许多相关格式的示例。

请注意,请勿将此配置文件与环境变量配置文件rabbitmq-env.conf 和rabbitmq-env-conf.bat混淆

要覆盖RabbitMQ配置文件的主要位置,请使用RABBITMQ_CONFIG_FILE  环境变量。使用.conf作为新样式配置格式的文件扩展名,例如/etc/rabbitmq/rabbitmq.conf或 /data/configuration/rabbitmq/rabbitmq.conf

advanced.config文件

某些配置设置不可能或难以使用sysctl格式进行配置。因此,可以使用Erlang术语格式的另一个配置文件(与rabbitmq.config相同)。该文件通常命名为advanced.config。它将与Rabbitmq.conf中提供的配置合并。

RabbitMQ服务器源存储库包含一个 名为advanced.config.example 的示例advanced.config文件。它着重于通常使用高级配置设置的选项。

要覆盖高级配置文件的位置,请使用RABBITMQ_ADVANCED_CONFIG_FILE 环境变量。

Rabbitmq.conf,advanced.config和rabbitmq-env.conf的位置

默认配置文件位置是特定于发行版的。RabbitMQ软件包或节点将不会创建任何配置文件。用户和部署工具在创建文件时应使用以下位置:

平台默认配置文件目录示例配置文件路径
通用二进制包$ RABBITMQ_HOME / etc / rabbitmq /$ RABBITMQ_HOME / etc / rabbitmq / rabbitmq.conf, $ RABBITMQ_HOME / etc / rabbitmq / advanced.config
Debian和Ubuntu/ etc / rabbitmq //etc/rabbitmq/rabbitmq.conf, /etc/rabbitmq/advanced.config
基于RPM的Linux/ etc / rabbitmq //etc/rabbitmq/rabbitmq.conf, /etc/rabbitmq/advanced.config
视窗%APPDATA%\ RabbitMQ \%APPDATA%\ RabbitMQ \ rabbitmq.conf, %APPDATA%\ RabbitMQ \ advanced.config
MacOS Homebrew公式$ {install_prefix} / etc / rabbitmq /,而Homebrew地窖前缀通常为/ usr / local$ {} install_prefix /etc/rabbitmq/rabbitmq.conf, $ {} install_prefix /etc/rabbitmq/advanced.config

环境变量可用于覆盖配置文件的位置:

<span style="color:#e6e1dc"><span style="color:#bc9458"><em>#覆盖主要配置文件的位置</em></span>
<span style="color:#6d9cbe">RABBITMQ_CONFIG_FILE</span> = / path / to / a / custom / location / rabbitmq.conf

<span style="color:#bc9458"><em>#覆盖高级配置文件位置</em></span>
<span style="color:#6d9cbe">RABBITMQ_ADVANCED_CONFIG_FILE</span> = / path / to / a / custom / location / advanced.config

<span style="color:#bc9458"><em>#覆盖环境变量文件的位置</em></span>
<span style="color:#6d9cbe">RABBITMQ_CONF_ENV_FILE</span> = / path / to / a / custom / location / rabbitmq-env.conf
</span>

什么时候应用配置文件更改

重启节点后,rabbitmq.confadvanced.config更改才会生效

如果不存在rabbitmq-env.conf,则可以在由RABBITMQ_CONF_ENV_FILE变量指定的位置中手动创建它。在Windows系统上,它名为rabbitmq-env-conf.bat

如果配置文件位置或`rabbitmq-env-conf.bat中的任何值已更改,Windows服务用户将需要重新安装服务。否则,将不会更新服务使用的环境变量。

在部署自动化的上下文中,这意味着理想情况下,应在安装RabbitMQ之前设置环境变量(例如RABBITMQ_BASERABBITMQ_CONFIG_FILE)。这将有助于避免不必要的混乱和重新安装Windows服务。

rabbitmq.config(经典格式)文件

在此之前的RabbitMQ 3.7.0,RabbitMQ的配置文件被命名为 rabbitmq.config并使用相同的Erlang项格式通过使用advanced.config今天。为了向后兼容,仍支持该格式。

经典格式已弃用。请根据需要使用Rabbitmq.conf中新样式配置格式 ,并附上advanced.config文件。

要使用经典格式的配置文件,请导出RABBITMQ_CONFIG_FILE指向扩展名为.config的文件。该扩展名将向RabbitMQ指示应以经典配置格式将文件视为一个文件。

一个名为 rabbitmq.config.example 的示例配置文件。它包含经典config格式的大多数配置项目的示例。

要覆盖RabbitMQ配置文件的主要位置,请使用RABBITMQ_CONFIG_FILE  环境变量。使用.config作为经典配置格式的文件扩展名。

经典配置格式的使用应仅限于advanced.config文件和不能使用ini-style配置文件配置的设置。

示例配置文件

RabbitMQ服务器源存储库包含配置文件的示例:

这些文件包含大多数配置键的示例以及这些设置的简要说明。在示例中,所有配置项均已注释掉,因此您可以取消注释所需的内容。请注意,示例文件仅用作示例,不应视为一般建议。

在大多数发行版中,示例文件与实际文件放置在相同的位置(请参见上文)。关于Debian和RPM发行政策,禁止这样做;而是分别在/ usr / share / doc / rabbitmq-server / 或/usr/share/doc/rabbitmq-server-3.8.5/下找到文件。

可在rabbitmq.conf中配置的核心服务器变量

这些变量是最常见的。该列表不完整,因为某些设置非常模糊。

文献资料
听众在其上侦听“普通” AMQP 0-9-1和AMQP 1.0连接(不使用TLS)的端口或主机名/对。有关更多详细信息和示例,请参见网络指南

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">listeners.tcp.default</span> = <span style="color:#a5c261">5672</span>
</span>

 

num_acceptors.tcp接受TCP侦听器连接的Erlang进程数。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">num_acceptors.tcp</span> = <span style="color:#a5c261">10</span>
</span>

 

handshake_timeoutAMQP 0-9-1握手(套接字连接和TLS握手后)的最长时间(以毫秒为单位)。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">handshake_timeout</span> = <span style="color:#a5c261">10000</span>
</span>

 

listeners.ssl侦听启用了TLS的AMQP 0-9-1和AMQP 1.0连接的端口或主机名/对。有关更多详细信息和示例,请参见TLS指南

默认值:(未设置)

num_acceptors.ssl接受来自客户端的TLS连接的Erlang进程数。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">num_acceptors.ssl</span> = <span style="color:#a5c261">10</span>
</span>

 

ssl_optionsTLS配置。请参阅TLS指南

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">ssl_options</span> =无
</span>

 

ssl_handshake_timeoutTLS握手超时,以毫秒为单位。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">ssl_handshake_timeout</span> = <span style="color:#a5c261">5000</span>
</span>

 

vm_memory_high_watermark触发流量控制的内存阈值。可以是绝对值,也可以相对于操作系统可用的RAM量:
<span style="color:#e6e1dc"><span style="color:#6d9cbe">vm_memory_high_watermark.relative</span> = <span style="color:#a5c261">0.6</span>
</span>
<span style="color:#e6e1dc"><span style="color:#6d9cbe">vm_memory_high_watermark.absolute</span> = <span style="color:#a5c261">2</span> GB
</span>
请参阅基于内存的流控制警报 文档。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">vm_memory_high_watermark.relative</span> = <span style="color:#a5c261">0.4</span>
</span>

 

vm_memory_calculation_strategy内存使用情况报告的策略。可以是以下之一:
  • 已分配:使用Erlang内存分配器统计信息
  • rss:使用操作系统RSS内存报告。这使用特定于操作系统的方法,并且可能会启动短暂的子进程。
  • legacy:使用传统内存报告(运行时认为要使用多少内存)。该策略是相当不准确的。
  • erlang:与legacy相同,保留为向后兼容

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">vm_memory_calculation_strategy</span> =已分配
</span>

 

vm_memory_high_watermark_paging_ratio队列开始将消息分页到磁盘以释放内存的高水位标记限制的分数。请参阅基于内存的流控制文档。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">vm_memory_high_watermark_paging_ratio</span> = <span style="color:#a5c261">0.5</span>
</span>

 

total_memory_available_override_value与使用特定于操作系统的方式从环境推断内存相比,可以覆盖可用的内存总量。仅当节点可用的实际最大RAM量与节点将推断的值不匹配时(例如,由于容器化或节点无法识别的类似约束),才应使用此方法。该值可以设置为整数个字节,也可以设置为信息单位(例如“ 8GB”)。例如,当该值设置为4 GB时,该节点将认为它正在具有4 GB RAM的计算机上运行。

默认值:未定义(未设置或使用)。

disk_free_limitRabbitMQ在其上存储数据的分区的磁盘可用空间限制。当可用磁盘空间低于此限制时,将触发流控制。可以相对于RAM总量设置该值,也可以设置为绝对值(以字节为单位),也可以设置为信息单位(例如,“ 50MB”或“ 5GB”):
<span style="color:#e6e1dc"><span style="color:#6d9cbe">disk_free_limit.relative</span> = <span style="color:#a5c261">3.0</span></span>
<span style="color:#e6e1dc"><span style="color:#6d9cbe">disk_free_limit.absolute</span> = <span style="color:#a5c261">2</span> GB</span>
默认情况下,可用磁盘空间必须超过50MB。请参阅磁盘警报文档。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">disk_free_limit.absolute</span> = <span style="color:#a5c261">50</span> MB
</span>

 

log.file.level控制日志记录的粒度。该值是日志事件类别和日志级别对的列表。

级别可以是错误(仅记录错误),警告(仅记录错误和警告),信息(错误,警告和参考消息被记录)或调试(错误,警告,参考消息和调试消息)之一。已记录)。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">log.file.level</span> =信息
</span>

 

channel_max与客户端协商的最大允许通道数,不包括协议中使用的特殊通道号0。设置为0表示“无限制”,这是一个危险值,因为应用程序有时会出现通道泄漏。使用更多通道会增加代理的内存占用量。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">channel_max</span> = <span style="color:#a5c261">2047</span>
</span>

 

channel_operation_timeout通道操作超时(以毫秒为单位)(内部使用,由于消息协议的差异和限制,因此不直接暴露给客户端)。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">channel_operation_timeout</span> = <span style="color:#a5c261">15000</span>
</span>

 

max_message_size允许的最大消息有效负载大小(以字节为单位)。较大的消息将被拒绝,并带有适当的通道例外。

默认值:134217728

最大值:536870912

心跳表示服务器在连接参数协商期间建议的心跳超时的值。如果两端都设置为0,则禁用心跳(不建议这样做)。有关详细信息,请参见心跳指南

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">心跳</span> = <span style="color:#a5c261">60</span>
</span>

 

default_vhostRabbitMQ从头开始创建新数据库时要创建的虚拟主机。交换“ amq.rabbitmq.log”将存在于该虚拟主机中。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">default_vhost</span> = /
</span>

 

default_userRabbitMQ从头开始创建新数据库时要创建的用户名。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">default_user</span> =访客
</span>

 

default_pass默认用户的密码。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">default_pass</span> =客人
</span>

 

default_user_tags默认用户的标签。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">default_user_tags.administrator</span> = true
</span>

 

default_permissions创建默认用户时分配给它的权限

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">default_permissions.configure</span> =。*
 <span style="color:#6d9cbe">default_permissions.read</span> =。*
 <span style="color:#6d9cbe">default_permissions.write</span> =。*
</span>

 

loopback_users仅允许通过环回接口(即“ localhost”)连接到代理的用户列表。

要允许默认的“ guest”用户远程连接(一种不适合生产使用的安全做法),请将其设置为“ none”:

<span style="color:#e6e1dc"><span style="color:#bc9458"><em>#糟糕的安全做法,</em></span>
<span style="color:#bc9458"><em>#考虑</em></span>
<span style="color:#bc9458"><em>使用安全生成的凭据</em></span>
<span style="color:#bc9458"><em>创建一个新的</em></span><span style="color:#bc9458"><em>用户!</em></span><span style="color:#6d9cbe">loopback_users</span> =无
</span>

 

要将另一个用户限制为仅限本地主机的连接,请这样做(“ monitoring”是用户名):

<span style="color:#e6e1dc"><span style="color:#6d9cbe">loopback_users.monitoring</span> = true
</span>

 

默认:

<span style="color:#e6e1dc"><span style="color:#bc9458"><em>#guest使用众所周知的</em></span>
<span style="color:#bc9458"><em>#凭据,并且只能</em></span>
<span style="color:#bc9458"><em>#从本地主机登录</em></span>
<span style="color:#bc9458"><em>#默认情况下</em></span>
<span style="color:#6d9cbe">loopback_users.guest</span> = true
</span>

 

cluster_formation.classic_config.nodes经典对等发现后端的要联系节点列表。例如,要在第一次引导时使用节点“ rabbit @ hostname1”和“ rabbit @ hostname2”进行集群:
<span style="color:#e6e1dc"><span style="color:#6d9cbe">cluster_formation.classic_config.nodes.1</span> =兔子@主机名1
 <span style="color:#6d9cbe">cluster_formation.classic_config.nodes.2</span> =兔子@主机名2
</span>

默认值:“ none”(未设置)

collect_statistics统计信息收集方式。主要与管理插件相关。选项有:
  • `none`(不发出统计事件)
  • `coarse`(发出每个队列/每个通道/每个连接的统计信息)
  • “精细”(还发出按消息统计信息)

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">collect_statistics</span> =无
</span>

 

collect_statistics_interval统计信息的收集间隔(以毫秒为单位)。主要与管理插件相关。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">collect_statistics_interval</span> = <span style="color:#a5c261">5000</span>
</span>

 

management_db_cache_multiplier影响管理插件 将缓存昂贵的管理查询(例如队列列表)的时间。缓存将上次查询的经过时间乘以该值,并将结果缓存此时间量。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">management_db_cache_multiplier</span> = <span style="color:#a5c261">5</span>
</span>

 

auth_mechanisms提供给客户端的SASL身份验证机制

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">auth_mechanisms.1</span> =普通
 <span style="color:#6d9cbe">auth_mechanisms.2</span> = AMQPLAIN
</span>

 

auth_backends

要使用 的身份验证和授权后端列表。有关详细信息和示例,请参见访问控制指南

通过插件可以使用除`rabbit_auth_backend_internal`外的其他数据库。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">auth_backends.1</span> =内部</span>

 

reverse_dns_lookups设置为true可使RabbitMQ对客户端连接执行反向DNS查找,并通过rabbitmqctl和管理插件显示该信息。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">reverse_dns_lookups</span> = 假</span>

 

proxy_count用于集群内部通信的委托进程数。在具有大量核心并且也是群集一部分的计算机上,您可能希望增加该值。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">proxy_count</span> = <span style="color:#a5c261">16</span></span>

 

tcp_listen_options默认套接字选项。您可能不想更改此设置。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">tcp_listen_options.backlog</span> = <span style="color:#a5c261">128 </span>
<span style="color:#6d9cbe">tcp_listen_options.nodelay</span> = 真
<span style="color:#6d9cbe">tcp_listen_options.linger.on</span> = 真
<span style="color:#6d9cbe">tcp_listen_options.linger.timeout</span> = <span style="color:#a5c261">0 </span>
<span style="color:#6d9cbe">tcp_listen_options.exit_on_close</span> = 假
</span>

 

hipe_compile

不使用。不再支持此选项。从Erlang 22开始删除了受支持的HiPE。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">hipe_compile</span> = 假</span>

 

cluster_partition_handling如何处理网络分区。可用的模式有:
  • 忽视
  • 自愈
  • pause_minority
  • pause_if_all_down
pause_if_all_down模式需要其他参数:
  • 节点
  • 恢复
有关更多信息,请参见 分区文档

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">cluster_partition_handling</span> =忽略</span>

 

cluster_keepalive_interval节点应向其他节点发送保持活动消息的频率(以毫秒为单位)。请注意,这与net_ticktime不同;错过的keepalive消息不会导致节点被认为宕机。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">cluster_keepalive_interval</span> = <span style="color:#a5c261">10000</span>
</span>

 

queue_index_embed_msgs_below消息的大小(字节),低于该大小的消息将直接嵌入队列索引中。建议您在更改之前阅读持久性调整文档。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">queue_index_embed_msgs_below</span> = <span style="color:#a5c261">4096</span>
</span>

 

mnesia_table_loading_retry_timeout等待群集中的Mnesia表可用时使用的超时。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">mnesia_table_loading_retry_timeout</span> = <span style="color:#a5c261">30000</span>
</span>

 

mnesia_table_loading_retry_limit在集群启动中等待Mnesia表时重试。请注意,此设置不适用于Mnesia升级或节点删除。

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">mnesia_table_loading_retry_limit</span> = <span style="color:#a5c261">10</span>
</span>

 

mirroring_sync_batch_size用于将消息传输到非同步副本(队列镜像)的批处理大小。请参阅有关急切批处理同步的文档

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">mirroring_sync_batch_size</span> = <span style="color:#a5c261">4096</span>
</span>

 

queue_master_locator队列主服务器定位策略。可用的策略有:
  • 最小大师
  • 客户本地
  • 随机
有关更多信息,请参阅有关队列主服务器位置的 文档

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">queue_master_locator</span> =本地客户端
</span>

 

proxy_protocol如果设置为true,则在打开AMQP连接时,RabbitMQ将期望首先发送代理协议标头。这意味着在RabbitMQ的前面设置一个符合代理协议的反向代理(例如HAproxy 或AWS ELB)。启用代理协议后,客户端无法直接连接到RabbitMQ,因此所有连接都必须通过反向代理。

有关更多信息,请参见网络指南

默认:

<span style="color:#e6e1dc"><span style="color:#6d9cbe">proxy_protocol</span> = 假
</span>

 

只能在“ 兔子”部分下的高级配置文件中设置以下配置设置。

文献资料
msg_store_index_module队列索引的实现模块。建议您 在更改此内容之前阅读消息存储调整文档。

默认值:rabbit_msg_store_ets_index

<span style="color:#e6e1dc">{兔子, [
{msg_store_index_module,rabbit_msg_store_ets_index}
]}
</span>

 

backing_queue_module队列内容的实现模块。

默认:

<span style="color:#e6e1dc">{兔子, [
{backing_queue_module,rabbit_variable_queue}
]}
</span>

 

msg_store_file_size_limit消息存储段文件的大小。对于具有现有(已初始化)数据库的节点更改此设置很危险,可能导致数据丢失!

默认值:16777216

<span style="color:#e6e1dc">{兔子,[
 <span style="color:#bc9458"><em>%% </em></span>
<span style="color:#bc9458"><em>使用现有(已初始化)数据库</em></span>
<span style="color:#bc9458"><em>对节点</em></span><span style="color:#bc9458"><em>%%进行</em></span><span style="color:#bc9458"><em>更改</em></span><span style="color:#bc9458"><em>很危险,可能</em></span><span style="color:#bc9458"><em>会导致%%导致数据丢失!</em></span>
{msg_store_file_size_limit,<span style="color:#a5c261">16777216</span> }
]}
</span>

 

trace_vhosts跟踪器内部使用。你不应该改变这个。

默认:

<span style="color:#e6e1dc">{兔子, [
{trace_vhosts,[]}
]}
</span>

 

msg_store_credit_disc_bound消息存储给予队列处理的功劳。

默认情况下,为队列进程分配4000个消息存储信用,然后为它处理的每800条消息分配800个信用。

由于内存压力而需要分页的邮件也将使用此信用。

消息存储是信用流链中的最后一个组件。了解信贷流量。

仅当消息持久保存到消息存储中时,此值才生效。如果消息嵌入在队列索引中,则修改此设置无效,因为在写入队列索引时不使用credit_flow。

默认:

<span style="color:#e6e1dc">{兔子, [
{msg_store_credit_disc_bound,{ <span style="color:#a5c261">4000</span>,<span style="color:#a5c261">800</span> }}
]}
</span>

 

queue_index_max_journal_entries在多少个队列索引日志条目之后,它将刷新到磁盘。

默认:

<span style="color:#e6e1dc">{兔子, [
{queue_index_max_journal_entries,<span style="color:#a5c261">32768</span> }
]}
</span>

 

lazy_queue_explicit_gc_run_operation_threshold仅在内存不足时才可用于懒惰队列的可调值。这是触发垃圾收集器和其他内存减少活动的阈值。较低的值可能会降低性能,而较高的值可以提高性能,但会导致更高的内存消耗。您几乎可以肯定不应该更改此设置。

默认:

<span style="color:#e6e1dc">{兔子,<span style="color:#ffc66d">[
{lazy_queue_explicit_gc_run_operation_threshold,1000}
]</span> }
</span>

 

queue_explicit_gc_run_operation_threshold仅在内存不足时可用于普通队列的可调值。这是触发垃圾收集器和其他内存减少活动的阈值。较低的值可能会降低性能,而较高的值可以提高性能,但会导致更高的内存消耗。您几乎可以肯定不应该更改此设置。

默认:

<span style="color:#e6e1dc">{兔子,<span style="color:#ffc66d">[
{queue_explicit_gc_run_operation_threshold,1000}
]</span> }
</span>

 

RabbitMQ随附的几个插件都有专门的文档指南,涵盖了插件配置:

配置值加密

敏感的配置条目(例如密码,包含凭据的URL)可以在RabbitMQ配置文件中进行加密。代理在启动时解密加密的条目。

请注意,加密的配置条目不会使系统真正更安全。但是,它们允许RabbitMQ的部署符合各个国家/地区的法规,要求配置文件中的纯文本中不得显示任何敏感数据。

加密值必须位于Erlang 加密 元组内:{encrypted,...}。这是默认用户的带有加密密码的配置文件示例:

<span style="color:#e6e1dc">[
  {兔子, [
      {default_user,<< <span style="color:#a5c261">“ guest”</span> >>},
      {default_pass,
        {已加密,
         << <span style="color:#a5c261">“ cPAymwqmMnbPXXRVqVzpxJdrS8mHEKuo2V + 3vt1u / fymexD9oztQ2G / oJ4PAaSb2c5N / hRJ2aqP / X0VAfx8xOQ ==”</span> >>
        }
      },
      {config_entry_decoder,[
             {passphrase,<< <span style="color:#a5c261">“ mypassphrase”</span> >>}
         ]}
    ]}
]。
</span>

请注意config_entry_decoder密钥和RabbitMQ将用来解密加密值的密码。

密码不必在配置文件中进行硬编码,它可以在单独的文件中:

<span style="color:#e6e1dc">[
  {兔子, [
      <span style="color:#bc9458"><em>%% ...</em></span>
      {config_entry_decoder,[
             {passphrase,{file,<span style="color:#a5c261">“ / path / to / passphrase / file”</span> }}
         ]}
    ]}
]。
</span>

RabbitMQ还可以通过使用{passphrase,提示符}来要求操作员在输入密码时输入密码。

使用rabbitmqctlencode 命令加密值:

<span style="color:#e6e1dc">rabbitmqctl编码<span style="color:#a5c261">'<<“ guest” >>'</span> mypassphrase
{encrypted,<< <span style="color:#a5c261">“ ...长加密值...”</span> >>}
rabbitmqctl编码<span style="color:#a5c261">' “AMQP://弗雷德:secret@host1.domain/my_vhost”'</span> mypassphrase
{encrypted,<< <span style="color:#a5c261">“ ...长加密值...”</span> >>}
</span>

或者,在Windows上:

<span style="color:#e6e1dc">rabbitmqctl编码<span style="color:#a5c261">“ <<” </span><span style="color:#a5c261">“来宾” </span><span style="color:#a5c261">“ >>”</span> mypassphrase
{encrypted,<< <span style="color:#a5c261">“ ...长加密值...”</span> >>}
rabbitmqctl编码<span style="color:#a5c261">' “AMQP://弗雷德:secret@host1.domain/my_vhost”'</span> mypassphrase
{encrypted,<< <span style="color:#a5c261">“ ...长加密值...”</span> >>}
</span>

如果要解密值,请添加解码命令:

<span style="color:#e6e1dc">rabbitmqctl解码<span style="color:#a5c261">'{encrypted,<<“ ...” >>}'</span> mypassphrase
<< <span style="color:#a5c261">“客人”</span> >>
rabbitmqctl解码<span style="color:#a5c261">'{encrypted,<<“ ...” >>}'</span> mypassphrase
 <span style="color:#a5c261">“ amqp:// fred:secret@host1.domain/my_vhost”</span>
</span>

或者,在Windows上:

<span style="color:#e6e1dc">rabbitmqctl解码<span style="color:#a5c261">“ {encrypted,<<” </span><span style="color:#a5c261">“ ...” </span><span style="color:#a5c261">“ >>}”</span> mypassphrase
<< <span style="color:#a5c261">“客人”</span> >>
rabbitmqctl解码<span style="color:#a5c261">“ {encrypted,<<“ </span><span style="color:#a5c261">” ...“ </span><span style="color:#a5c261">” >>}“</span> mypassphrase
 <span style="color:#a5c261">” amqp:// fred:secret@host1.domain/my_vhost“</span>
</span>

可以对不同类型的值进行编码。上面的示例对二进制文件(<<“ guest” >>)和字符串(“ amqp:// fred:secret@host1.domain/my_vhost”)进行编码

加密机制使用PBKDF2从密码生成一个派生密钥。默认哈希函数为SHA512,默认迭代次数为1000。默认密码为AES 256 CBC。

这些默认值可以在配置文件中更改:

<span style="color:#e6e1dc">[
  {兔子, [
      ...
      {config_entry_decoder,[
             {passphrase,<span style="color:#a5c261">“ mypassphrase”</span> },
             {cipher,blowfish_cfb64},
             {hash,sha256},
             {次,<span style="color:#a5c261">10000</span> }
         ]}
    ]}
]。</span>

或使用CLI工具

<span style="color:#e6e1dc">rabbitmqctl编码--cipher blowfish_cfb64- <span style="color:#6d9cbe">哈希</span> sha256-迭代10000 \
                      <span style="color:#a5c261">'<<“ guest” >>'</span> mypassphrase
</span>

或者,在Windows上:

<span style="color:#e6e1dc">rabbitmqctl编码--cipher blowfish_cfb64-- hash sha256-- iterations  <span style="color:#a5c261">10000</span> \
                      <span style="color:#a5c261">“ <<” </span><span style="color:#a5c261">“ guest” </span><span style="color:#a5c261">“ >>”</span> mypassphrase
</span>

使用环境变量进行配置

可以使用环境变量来配置某些服务器参数: 节点名称,RabbitMQ 配置文件位置, 节点间通信端口,Erlang VM标志等等。

路径和目录名称限制

一些环境变量配置路径和位置(节点的基本或数据目录,插件源目录和扩展目录,等等)。这些路径必须排除许多字符:

  • *(在Linux,macOS,BSD和其他类似UNIX的系统上)
  • ^(在Windows上)
  • []
  • {}

以上字符将使节点无法启动或正常运行(例如,扩展插件并加载其元数据)。

Linux,MacOS,BSD

在基于UNIX的系统(Linux,MacOS和BSD的版本)上,可以使用名为rabbitmq-env.conf的文件 来定义代理将使用的环境变量。可以使用RABBITMQ_CONF_ENV_FILE环境变量来配置其位置

rabbitmq-env.conf使用标准环境变量名称,但没有RABBITMQ_前缀。例如, RABBITMQ_CONFIG_FILE变量在下面显示为CONFIG_FILE,RABBITMQ_NODENAME变为NODENAME

<span style="color:#e6e1dc"><span style="color:#bc9458"><em>#示例Rabbitmq-env.conf文件条目。请注意,变量</em></span>
<span style="color:#bc9458"><em>#没有RABBITMQ_前缀。</em></span>
<span style="color:#bc9458"><em>#</em></span>
<span style="color:#bc9458"><em>#覆盖节点名称</em></span>
NODENAME =兔子@myhost

<span style="color:#bc9458"><em>#指定新样式的配置文件位置</em></span>
CONFIG_FILE = / etc / rabbitmq / rabbitmq.conf

<span style="color:#bc9458"><em>#指定高级配置文件位置</em></span>
ADVANCED_CONFIG_FILE = / etc / rabbitmq / advanced.config
</span>

有关详细信息,请参见rabbitmq-env.conf手册页

视窗

定制名称,端口或位置的最简单选项是在Windows对话框中配置环境变量:“开始”>“设置”>“控制面板”>“系统”>“高级”>“环境变量”。然后创建或编辑系统变量名称和值。

或者,可以使用名为rabbitmq-env-conf.bat的文件 来定义代理将使用的环境变量。可以使用RABBITMQ_CONF_ENV_FILE环境变量来配置其位置

如果配置文件位置或`rabbitmq-env-conf.bat中的任何值更改,Windows服务用户将需要重新安装该服务。否则,将不会更新服务使用的环境变量。

可以使用安装程序或在具有管理员权限的命令行上完成此操作:

  • 启动管理命令提示符
  • cd进入RabbitMQ服务器安装目录下的sbin文件夹(例如C:\ Program Files(x86)\ RabbitMQ Server \ rabbitmq_server- {version} \ sbin
  • 运行rabbitmq-service.bat stop停止服务
  • 运行rabbitmq-service.bat remove以删除Windows服务(这不会删除RabbitMQ或其数据目录)
  • 通过命令行设置环境变量,即运行如下命令:
    <span style="color:#e6e1dc"><span style="color:#6d9cbe">设置</span> RABBITMQ_BASE = C:\ Data \ RabbitMQ</span>
  • 运行rabbitmq-service.bat安装
  • 运行rabbitmq-service.bat开始

这将以使环境变量和rabbitmq-env-conf.bat更改可观察到的方式重启节点 。

RabbitMQ使用的环境变量

RabbitMQ使用的所有环境变量都使用前缀RABBITMQ_(在rabbitmq-env.conf或 rabbitmq-env-conf.bat中定义时除外)。

在shell环境中设置的环境变量优先于Rabbitmq-env.conf或 Rabbitmq-env-conf.bat中设置的变量,后者依次覆盖RabbitMQ内置的默认设置。

下表描述了可用于配置RabbitMQ的关键环境变量。“ 文件和目录位置”指南中介绍了更多变量。

名称描述
RABBITMQ_NODE_IP_ADDRESS如果只想绑定到一个网络接口,请更改此设置。可以在配置文件中设置绑定到两个或多个接口。

默认值:一个空字符串,表示“绑定到所有网络接口”。

RABBITMQ_NODE_PORT有关RabbitMQ各个部分使用的端口的更多信息,请参见网络指南

默认值:5672。

RABBITMQ_DIST_PORT用于节点间和CLI工具通信的端口。忽略节点配置文件是否设置了kernel.inet_dist_listen_minkernel.inet_dist_listen_max密钥。有关详细信息,请参见网络

默认值RABBITMQ_NODE_PORT + 20000

ERL_EPMD_ADDRESSepmd 使用的接口,它是节点间和CLI工具通信中的组件。

默认值:所有可用接口,IPv6和IPv4。

ERL_EPMD_PORTepmd 使用的端口,它是节点间和CLI工具通信中的组件。

默认值4369

RABBITMQ_DISTRIBUTION_BUFFER_SIZE用于节点间通信连接的传出数据缓冲区大小限制(以千字节为单位)。不建议使用低于64 MB的值。

默认值:128000

RABBITMQ_IO_THREAD_POOL_SIZE运行时用于I / O的线程数。不建议使用低于32的值。

默认值:128(Linux),64(Windows)

RABBITMQ_NODENAME每个Erlang-node-and-machine组合的节点名称应该唯一。要运行多个节点,请参阅集群指南

默认值

  • Unix *: rabbit @ $ HOSTNAME
  • Windows: rabbit @%COMPUTERNAME%

 

RABBITMQ_CONFIG_FILERabbitMQ主配置文件路径,例如 /etc/rabbitmq/rabbitmq.conf/data/configuration/rabbitmq.conf(用于新样式配置格式文件)。如果使用经典配置格式,则扩展名必须为.config 或可以完全省略。

默认值

  • 通用UNIX$ RABBITMQ_HOME / etc / rabbitmq / rabbitmq
  • Debian的/ etc / rabbitmq / rabbitmq
  • RPM/ etc / rabbitmq / rabbitmq
  • MacOS(Homebrew)$ {install_prefix} / etc / rabbitmq / rabbitmq,Homebrew前缀通常为/ usr / local
  • Windows%APPDATA%\ RabbitMQ \ rabbitmq

 

RABBITMQ_ADVANCED_CONFIG_FILE“高级”(基于Erlang术语)RabbitMQ配置文件路径,扩展名为.config。例如,/ data/rabbitmq/advanced.config

默认值

  • 通用UNIX$ RABBITMQ_HOME / etc / rabbitmq / advanced
  • Debian/ etc / rabbitmq / advanced
  • RPM/ etc / rabbitmq / advanced
  • MacOS(Homebrew)$ {install_prefix} / etc / rabbitmq / advanced,Homebrew前缀通常为/ usr / local
  • Windows%APPDATA%\ RabbitMQ \高级

 

RABBITMQ_CONF_ENV_FILE包含环境变量定义的文件的位置(不带RABBITMQ_ 前缀)。请注意,Windows上的文件名不同于其他操作系统。

默认值

  • 通用UNIX软件包$ RABBITMQ_HOME / etc / rabbitmq / rabbitmq-env.conf
  • Ubuntu和Debian/etc/rabbitmq/rabbitmq-env.conf
  • RPM/etc/rabbitmq/rabbitmq-env.conf
  • MacOS(Homebrew)$ {install_prefix} /etc/rabbitmq/rabbitmq-env.conf,Homebrew前缀通常为/ usr / local
  • Windows%APPDATA%\ RabbitMQ \ rabbitmq-env-conf.bat

 

RABBITMQ_MNESIA_BASE该基本目录包含RabbitMQ服务器的节点数据库,消息存储和集群状态文件的子目录,每个节点一个子目录,除非明确设置了RABBITMQ_MNESIA_DIR。有效的RabbitMQ用户必须有足够的权限随时读取,写入和创建此目录中的文件和子目录,这一点很重要。通常不会覆盖此变量。通常会改写RABBITMQ_MNESIA_DIR

默认值

  • 通用UNIX软件包$ RABBITMQ_HOME / var / lib / rabbitmq / mnesia
  • Ubuntu和Debian软件包:/ var / lib / rabbitmq / mnesia /
  • RPM/ var / lib / rabbitmq / plugins
  • MacOS(Homebrew)$ {install_prefix} / var / lib / rabbitmq / mnesia,Homebrew前缀通常为/ usr / local
  • Windows%APPDATA%\ RabbitMQ

 

RABBITMQ_MNESIA_DIR该RabbitMQ节点的数据存储目录。这包括架构数据库,消息存储,集群成员信息和其他持久节点状态。

默认值

  • 通用UNIX软件包$ RABBITMQ_MNESIA_BASE / $ RABBITMQ_NODENAME
  • Ubuntu和Debian软件包:$ RABBITMQ_MNESIA_BASE / $ RABBITMQ_NODENAME
  • RPM$ RABBITMQ_MNESIA_BASE / $ RABBITMQ_NODENAME
  • MacOS(Homebrew)$ {install_prefix} / var / lib / rabbitmq / mnesia / $ RABBITMQ_NODENAME,Homebrew前缀通常为/ usr / local
  • Windows%APPDATA%\ RabbitMQ \ $ RABBITMQ_NODENAME

 

RABBITMQ_PLUGINS_DIR插件档案文件 所在的目录列表。这是类似PATH的变量,其中不同的路径由OS特定的分隔符分隔(::对于Unix ,;对于Windows)。插件可以安装到此处列出的任何目录中。不得包含路径限制部分中提到的任何字符。

默认值

  • 通用UNIX软件包$ RABBITMQ_HOME / plugins
  • Ubuntu和Debian软件包:/ var / lib / rabbitmq / plugins
  • RPM/ var / lib / rabbitmq / plugins
  • MacOS(Homebrew)$ {install_prefix} / Cellar / rabbitmq / $ {version} / plugins,Homebrew前缀通常为/ usr / local
  • Windows%RABBITMQ_HOME%\ plugins

 

RABBITMQ_PLUGINS_EXPAND_DIR节点将插件扩展(解压)插件的目录,并将其用作代码路径位置。不得包含路径限制部分中提到的任何字符。

默认值

  • 通用UNIX软件包$ RABBITMQ_MNESIA_BASE / $ RABBITMQ_NODENAME-plugins-expand
  • Ubuntu和Debian软件包:$ RABBITMQ_MNESIA_BASE / $ RABBITMQ_NODENAME-plugins-expand
  • RPM$ RABBITMQ_MNESIA_BASE / $ RABBITMQ_NODENAME-插件-扩大
  • MacOS(自制软件): $ {install_prefix} / var / lib / rabbitmq / mnesia / $ RABBITMQ_NODENAME-plugins-expand
  • Windows%APPDATA%\ RabbitMQ \ $ RABBITMQ_NODENAME-plugins-expand

 

RABBITMQ_USE_LONGNAME设置为true时,这将导致RabbitMQ使用完全限定的名称来标识节点。在使用完全限定域名的环境中,这可能会很有用。请注意,在不重置节点的情况下,不可能在使用短名称和长名称之间进行切换。

默认值false

RABBITMQ_SERVICENAME已安装的Windows服务的名称。这将出现在 services.msc中

默认值:RabbitMQ。

RABBITMQ_CONSOLE_LOG将此变量设置为new重新使用, 以将控制台输出从服务器重定向到默认RABBITMQ_BASE目录中名为%RABBITMQ_SERVICENAME%的文件。
  • 如果未设置,则服务器的控制台输出将被丢弃(默认)。
  • new:每次服务启动时都会创建一个新文件。
  • 重用:每次服务启动时,文件将被覆盖。

默认值:(无)

RABBITMQ_SERVER_CODE_PATH

启动运行时时,需要指定额外的代码路径(目录)。启动节点时将传递给erl命令。

默认值:(无)

RABBITMQ_CTL_ERL_ARGS调用Rabbitmqctl时使用 的erl命令的 参数。可以将其设置为指定用于Erlang分发的端口范围:-kernel inet_dist_listen_min 35672 -kernel inet_dist_listen_max 35680
 

默认值:(无)

RABBITMQ_SERVER_ERL_ARGS调用RabbitMQ服务器时使用 的erl命令的标准参数。应该仅出于调试目的而将其覆盖。覆盖此变量 将替换默认值。

默认值

  • Unix *: + P 1048576 + t 5000000 + stbt db + zdbbl 128000
  • Windows:

 

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS调用RabbitMQ服务器时使用 的erl命令的附加参数。此变量的值附加到默认参数列表(RABBITMQ_SERVER_ERL_ARGS)。

默认值

  • Unix *:
  • Windows:

 

RABBITMQ_SERVER_START_ARGS调用RabbitMQ服务器时使用 的erl命令的附加参数。这不会覆盖 RABBITMQ_SERVER_ERL_ARGS

默认值:(无)

除了上面列出的变量之外,还有几个环境变量可以告诉RabbitMQ 在哪里找到其数据库,日志文件,插件,配置等

最后,某些环境变量是特定于操作系统的。

名称描述
主机名当前机器的名称。

默认值

  • Unix,Linux:env主机名
  • MacOS:env主机名-s

 

电脑名称当前机器的名称。

默认值

  • Windows:本地主机

 

ERLANG_SERVICE_MANAGER_PATH此路径是erlsrv.exe(Erlang服务包装器脚本)的位置。

默认值

  • Windows服务:%ERLANG_HOME%\ erts- xxx \ bin

 

操作系统内核限制

大多数操作系统都对内核资源施加限制:虚拟内存,堆栈大小,打开的文件句柄等等。对于Linux用户,这些限制可以称为“ ulimit限制”。

RabbitMQ节点通常受最大打开文件句柄限制的影响。大多数Linux发行版的默认限制值通常为1024,这对于消息传递代理(或通常为任何数据服务)而言非常低。有关建议值,请参见生产清单

修改限制

使用systemd(现代Linux发行版)

在使用systemd的发行版上,操作系统限制是通过/etc/systemd/system/rabbitmq-server.service.d/limits.conf中的配置文件控制的。例如,要将最大打开文件句柄限制(nofile)设置为64000

<span style="color:#e6e1dc">[服务]
限制NOFILE = 64000
</span>

请参阅systemd文档以了解受支持的限制和其他指令。

使用Docker

要配置Docker包含的内核限制,请使用Docker守护程序配置文件中“ default-ulimits”键 。该文件必须安装在Docker主机上的/etc/docker/daemon.json上

<span style="color:#e6e1dc">{
   <span style="color:#6d9cbe">“ default-ulimits”</span>:{
     <span style="color:#6d9cbe">“ nofile”</span>:{
       <span style="color:#6d9cbe">“ Name”</span>:<span style="color:#a5c261">“ nofile”</span>,
       <span style="color:#6d9cbe">“ Hard”</span>:<span style="color:#a5c261">64000</span>,
       <span style="color:#6d9cbe">“ Soft”</span>:<span style="color:#a5c261">64000</span>
    }
  }
}
</span>

没有systemd(旧的Linux发行版)

调整不使用systemd的发行版上RabbitMQ的每用户限制的最直接方法是编辑/ etc / default / rabbitmq-server (由RabbitMQ Debian软件包提供)或rabbitmq-env.conf, 在调用ulimit之前服务已启动。

<span style="color:#e6e1dc">ulimit -S -n 4096
</span>

限制不能高于限制(在许多发行版中默认为4096)。 可以通过 /etc/security/limits.conf 增加硬限制。这还需要启用pam_limits.so模块并重新登录或重新引导。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来AI编程

共鸣===鼓励 打赏您随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值