跳到主要内容
版本:4.0

配置

概述

RabbitMQ 附带默认内置设置。这些设置在某些环境(例如开发和 QA)中可能完全足够。对于所有其他情况,以及 生产部署调整,您可以通过多种方式配置代理以及 插件

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

等等。

由于配置会影响系统中的许多区域,包括插件,因此各个 文档指南 会更深入地探讨可配置的内容。 运行时调整 是本指南的配套指南,重点介绍运行时中的可配置参数。 部署指南 是一个相关的指南,概述了大多数生产环境中可能需要调整的设置。

配置方式

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

配置 RabbitMQ 的方式
机制描述

配置文件

包含服务器和插件设置,用于 TCP 监听器和其他 网络相关设置TLS资源约束(警报)身份验证和授权后端消息存储设置 等等。

环境变量

用于定义 节点名称、文件和目录位置、从 shell 中获取的运行时标志,或在环境配置文件 rabbitmq-env.conf(Linux、MacOS、BSD)和 rabbitmq-env-conf.bat(Windows)中设置。

rabbitmqctl

当使用 内部身份验证/授权后端 时,rabbitmqctl 是用于管理虚拟主机、用户和权限的工具。它还用于管理 运行时参数和策略

rabbitmq-queues

rabbitmq-queues 是用于管理 仲裁队列 特定设置的工具。

rabbitmq-plugins

rabbitmq-plugins 是用于管理 插件 的工具。

rabbitmq-diagnostics

rabbitmq-diagnostics 允许检查节点状态,包括有效配置,以及许多其他指标和 运行状况检查

参数和策略

定义集群范围的设置,这些设置可以在运行时更改,以及方便为队列组(交换机等)配置的设置,例如包含可选的队列参数。

运行时(Erlang VM)标志

控制系统的低级方面:内存分配设置、节点间通信缓冲区大小、运行时调度程序设置等等。

操作系统内核限制

控制内核强制执行的进程限制:最大打开文件句柄限制、最大进程数和内核线程数、最大常驻集大小等等。

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

配置文件

介绍

虽然 RabbitMQ 中的一些设置可以使用环境变量进行调整,但大多数设置是使用名为 rabbitmq.conf主配置文件 进行配置的。

这包括核心服务器和插件的配置。可以使用一个额外的配置文件来配置主文件中配置格式无法表达的设置。这将在下面更详细地介绍。

以下部分将介绍这两种文件的语法和 位置、在哪里可以找到示例等等。

配置文件位置

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

本主题将在本指南的其余部分中详细介绍。

如有疑问,请参考 RabbitMQ 配置文件的位置,请参考以下部分介绍的日志文件和/或管理 UI。

如何查找配置文件位置

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

node           : rabbit@example
home dir : /var/lib/rabbitmq
config file(s) : /etc/rabbitmq/advanced.config
: /etc/rabbitmq/rabbitmq.conf

如果 RabbitMQ 找不到或无法读取配置文件,则日志条目会显示相应信息

node           : rabbit@example
home dir : /var/lib/rabbitmq
config file(s) : /var/lib/rabbitmq/hare.conf (not found)

或者,要检查本地节点使用的配置文件的位置,请使用 rabbitmq-diagnostics status 命令

# displays key
rabbitmq-diagnostics status

并查找类似以下内容的 Config files 部分

Config files

* /etc/rabbitmq/advanced.config
* /etc/rabbitmq/rabbitmq.conf

要检查特定节点的位置(包括远程运行的节点),请使用 -n(代表 --node)开关

rabbitmq-diagnostics status -n [node name]

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

在对配置设置进行故障排除时,在 验证有效节点配置 之前,验证配置文件路径是否正确、是否存在以及是否可以加载(例如,该文件是否可读)非常有用。这些步骤一起有助于快速缩小最常见配置问题。

现代和旧的配置文件格式

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

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

为了满足这一需求,现代 RabbitMQ 版本允许在单独的文件中同时使用这两种格式:rabbitmq.conf 使用新的格式,建议用于大多数设置,而 advanced.config 用于覆盖新的格式无法表达的更高级设置。这将在以下部分中更详细地介绍。

配置文件使用的格式用途
rabbitmq.conf新格式(sysctl 或类似 ini 的格式)

主要配置文件,扩展名为 .conf。应该用于大多数设置。它更容易让人类阅读和机器(部署工具)生成。并非所有设置都可以在这种格式中表达。

advanced.config经典(Erlang 项)

一些新格式配置无法表达的设置,例如 LDAP 查询。只有在必要时才应使用。

rabbitmq-env.conf(在 Windows 上为 rabbitmq-env.conf.bat环境变量对

用于在同一个位置设置与 RabbitMQ 相关的 环境变量

比较这个示例 rabbitmq.conf 文件

# A new style format snippet. This format is used by rabbitmq.conf files.
ssl_options.cacertfile = /path/to/ca_certificate.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

%% A classic format snippet, now used by advanced.config files.
[
{rabbit, [{ssl_options, [{cacertfile, "/path/to/ca_certificate.pem"},
{certfile, "/path/to/server_certificate.pem"},
{keyfile, "/path/to/server_key.pem"},
{verify, verify_peer},
{fail_if_no_peer_cert, true}]}]}
].

主配置文件,rabbitmq.conf

配置文件 rabbitmq.conf 允许配置 RabbitMQ 服务器和插件。该文件使用 sysctl 格式,与 advanced.config 和原始 rabbitmq.config(两者都使用 Erlang 项格式)不同。

该语法可以用三行简要解释

  • 一个设置使用一行
  • 行结构为 Key = Value
  • # 字符开头的任何行都是注释
  • 包含 # 字符的值(例如生成的字符串、生成的密码、加密值等等)可以使用单引号转义,例如:'efd3!53a9@92#a08_d_6d'

以下是一个最小的示例配置文件

# this is a comment
listeners.tcp.default = 5673

上面的示例等效于以下 经典配置格式

%% this is a comment
[
{rabbit, [
{tcp_listeners, [5673]}
]
}
].

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

RabbitMQ 服务器源代码库包含名为 rabbitmq.conf.example示例 rabbitmq.conf 文件。它包含您可能要设置的几乎所有配置项目的示例(省略了一些非常模糊的项目),以及这些设置的文档。

诸如 网络TLS访问控制 之类的文档指南包含许多相关格式的示例。

请注意,此配置文件不要与环境变量配置文件 rabbitmq-env.confrabbitmq-env-conf.bat 混淆。

要覆盖主要的 RabbitMQ 配置文件位置,请使用 RABBITMQ_CONFIG_FILE(或 RABBITMQ_CONFIG_FILES 使用 conf.d 风格的排序文件目录)环境变量。使用 .conf 作为新式配置文件格式的文件扩展名,例如 /etc/rabbitmq/rabbitmq.conf/data/configuration/rabbitmq/rabbitmq.conf

值转义

重要

使用转义值的行不能包含任何(特别是尾部的)注释。请在行上方添加必要的注释。

包含 # 字符的值(通常是机器生成的)可以使用单引号转义

# escaping is not necessary here but may be a good idea for generated
# values
default_user = '7f11ddc4f1900a233964'
# escaping is important here as without it,
# the # character and everything that follows it would be
# considered a comment
default_pass = 'efd3!53a9@92#a08_d_6d'

使用 .conf 文件目录

也可以使用 conf.d 风格的文件目录。使用 RABBITMQ_CONFIG_FILES(注意复数 "_FILES")将节点指向这样的文件目录

# uses a directory of .conf files loaded in alphabetical order
RABBITMQ_CONFIG_FILES=/path/to/a/custom/location/rabbitmq/conf.d

目标目录必须包含多个 .conf 文件,这些文件与 rabbitmq.conf 具有相同的语法。

它们将按字母顺序加载。一个常见的命名规范是在文件名中使用数字前缀,以便更容易地判断顺序,或者确保“默认文件”始终被优先加载,无论部署时生成多少个额外的文件。

ls -lh /path/to/a/custom/location/rabbitmq/conf.d
# => -r--r--r-- 1 rabbitmq rabbitmq 87B Mar 21 19:50 00-defaults.conf
# => -r--r--r-- 1 rabbitmq rabbitmq 4.6K Mar 21 19:52 10-main.conf
# => -r--r--r-- 1 rabbitmq rabbitmq 1.6K Mar 21 19:52 20-tls.conf
# => -r--r--r-- 1 rabbitmq rabbitmq 1.6K Mar 21 19:52 30-federation.conf

rabbitmq.conf 中的环境变量插值

现代 RabbitMQ 版本 支持 rabbitmq.conf 中的环境变量插值。例如,要覆盖默认用户凭据,可以使用 导入定义文件 或以下配置文件与两个环境变量结合使用

# environment variable interpolation
default_user = $(SEED_USERNAME)
default_pass = $(SEED_USER_PASSWORD)

环境变量可以用来配置值的某一部分,例如集群名称

cluster_name = deployment-$(DEPLOYMENT_ID)

在解析和验证配置文件之前,环境变量的值会作为字符串进行插值。这意味着它们可以用来覆盖数值设置(如端口)或路径(如 TLS 证书和私钥路径)。

此外,RabbitMQ 还尊重 一些环境变量,以便在加载配置文件之前必须知道某个值。

advanced.config 文件

信息

本节描述了已被 现代替代方案 取代的原始配置文件格式。

只有少数功能和高级(或很少使用)的设置需要使用这种格式。当有这种选择时,请使用 rabbitmq.conf

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

RabbitMQ 服务器源代码仓库包含 一个示例 advanced.config 文件,名为 advanced.config.example。它专注于通常使用高级配置设置的选项。

要覆盖高级配置文件的位置,请使用 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

Windows

%APPDATA%\RabbitMQ\

%APPDATA%\RabbitMQ\rabbitmq.conf, %APPDATA%\RabbitMQ\advanced.config

MacOS Homebrew 公式

${install_prefix}/etc/rabbitmq/,Homebrew cellar 前缀通常为 /usr/local

${install_prefix}/etc/rabbitmq/rabbitmq.conf, ${install_prefix}/etc/rabbitmq/advanced.config

可以使用环境变量来覆盖配置文件的位置

# overrides primary config file location
RABBITMQ_CONFIG_FILE=/path/to/a/custom/location/rabbitmq.conf

# overrides advanced config file location
RABBITMQ_ADVANCED_CONFIG_FILE=/path/to/a/custom/location/advanced.config

# overrides environment variable file location
RABBITMQ_CONF_ENV_FILE=/path/to/a/custom/location/rabbitmq-env.conf

何时应用配置文件更改

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-diagnostics 环境 命令打印有效配置(来自所有配置文件的用户提供的值合并到默认值中)。

# inspect effective configuration on a node
rabbitmq-diagnostics environment

要检查特定节点的有效配置(包括远程运行的节点),请使用 -n(代表 --node)开关

rabbitmq-diagnostics environment -n [node name]

上面的命令将打印节点上运行的每个应用程序(RabbitMQ、插件、库)的应用配置。有效配置是使用以下步骤计算的

  • rabbitmq.conf 被转换为内部使用的(高级)配置格式。这些配置被合并到默认值中。
  • 如果存在 advanced.config,则将其加载并合并到上述步骤的结果中。

应与 配置文件位置 一起验证有效配置。这些步骤共同帮助快速缩小最常见的配置错误问题范围。

rabbitmq.config(经典格式)文件

在 RabbitMQ 3.7.0 之前,RabbitMQ 配置文件名为 rabbitmq.config,并使用 advanced.config 相同的 Erlang 术语格式。该格式为了向后兼容性而 仍然受支持

经典格式已弃用。请优先使用 rabbitmq.conf 中的 新式配置文件格式,并在需要时附带 advanced.config 文件。

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

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

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

经典配置文件格式的使用应该仅限于 advanced.config 文件 和无法使用 ini 风格的配置文件 配置的设置。

示例配置文件

RabbitMQ 服务器源代码仓库包含配置文件的示例

这些文件包含大多数配置键的示例,以及对这些设置的简要说明。示例文件中的所有配置项都被注释掉,因此你可以取消注释需要的部分。请注意,示例文件旨在用作示例,不应将其视为一般性建议。

在大多数发行版中,示例文件被放置到与实际文件应放置的位置相同的位置(见上文)。在 Debian 和 RPM 发行版中,策略禁止这样做;相反,请在 /usr/share/doc/rabbitmq-server//usr/share/doc/rabbitmq-server-4.0.2/ 下找到该文件。

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

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

文档
listeners.tcp

用于监听“纯”AMQP 0-9-1 和 AMQP 1.0 连接(没有 TLS)的端口或主机名/对。有关更多详细信息和示例,请参阅 网络指南

默认

listeners.tcp.default = 5672

listeners.ssl

用于监听支持 TLS 的 AMQP 0-9-1 和 AMQP 1.0 连接的端口或主机名/对。有关更多详细信息和示例,请参阅 TLS 指南

默认:none(未设置)

ssl_options

TLS 配置。请参阅 TLS 指南

默认

ssl_options = none

num_acceptors.tcp

将为 TCP 监听器接受连接的 Erlang 进程数。

默认

num_acceptors.tcp = 10

num_acceptors.ssl

将从客户端接受 TLS 连接的 Erlang 进程数。

默认

num_acceptors.ssl = 10

distribution.listener.interface

控制与其他集群成员和 CLI 工具通信时将使用哪个网络接口。

默认

distribution.listener.interface = 0.0.0.0

distribution.listener.port_range.min

控制与其他集群成员和 CLI 工具通信时将使用的服务器端口范围的下限。

默认

distribution.listener.port_range.min = 25672

distribution.listener.port_range.max

控制与其他集群成员和 CLI 工具通信时将使用的服务器端口范围的上限。

默认

distribution.listener.port_range.max = 25672

handshake_timeout

AMQP 0-9-1 握手(在套接字连接和 TLS 握手之后)的最大时间,以毫秒为单位。

默认

handshake_timeout = 10000

ssl_handshake_timeout

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

默认

ssl_handshake_timeout = 5000

vm_memory_high_watermark

触发流量控制的内存阈值。可以是绝对值,也可以是相对于操作系统可用的 RAM 数量的相对值。

vm_memory_high_watermark.relative = 0.7
vm_memory_high_watermark.absolute = 2GB

请参阅 基于内存的流量控制警报 文档。

默认

vm_memory_high_watermark.relative = 0.6

vm_memory_calculation_strategy

内存使用报告策略。可以选择以下之一

  • allocated: 使用 Erlang 内存分配器统计信息
  • rss: 使用操作系统 RSS 内存报告。这使用特定于操作系统的工具,并且可能会启动短暂的子进程。
  • legacy: 使用传统内存报告(运行时认为使用了多少内存)。这种策略相当不准确。
  • erlang: 与 legacy 相同,为了向后兼容而保留

默认

vm_memory_calculation_strategy = allocated

total_memory_available_override_value

可以覆盖可用的总内存量,而不是使用特定于操作系统的工具从环境中推断出来。仅当节点可用的实际最大 RAM 量与节点推断的值不匹配时,才应使用此选项,例如,由于容器化或类似的约束,节点可能无法意识到这些约束。该值可以设置为字节数,也可以设置为信息单位(例如 8GB)。例如,当该值设置为 4 GB 时,节点将认为它运行在具有 4 GB RAM 的机器上。

默认:undefined(未设置或使用)。

disk_free_limit

RabbitMQ 存储数据的分区上的磁盘剩余空间限制。当可用磁盘空间低于此限制时,将触发流量控制。该值可以设置为相对于总 RAM 量,也可以设置为字节数,或者设置为信息单位(例如 50MB5GB

disk_free_limit.absolute = 2GB

默认情况下,剩余磁盘空间必须超过 50MB。对于 生产环境,必须重新审视这一点。请参阅 磁盘警报 文档。

默认

disk_free_limit.absolute = 50MB

queue_leader_locator

控制 用于选择节点的策略,以托管新声明的队列或流的领导者副本。

log.file.level

控制日志记录的粒度。该值是一个日志事件类别和日志级别对的列表。

级别可以是 error(仅记录错误)、warning(仅记录错误和警告)、info(记录错误、警告和信息消息)或 debug(记录错误、警告、信息消息和调试消息)。

默认

log.file.level = info

session_max_per_connection

AMQP 1.0 连接上可以同时处于活动状态的 AMQP 1.0 会话的最大数量。

默认:64

最小值:1

最大值:65535

link_max_per_session

AMQP 1.0 会话上可以同时处于活动状态的 AMQP 1.0 链接的最大数量。

默认:256

最小值:1

最大值:4294967295

channel_max

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

默认

channel_max = 2047

channel_operation_timeout

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

默认

channel_operation_timeout = 15000

max_message_size

允许的最大消息有效负载大小,以字节为单位。大于此大小的消息将被拒绝,并伴随一个合适的通道异常。

默认:16777216

最大值:536870912

heartbeat

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

默认

heartbeat = 60

default_vhost

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

默认

default_vhost = /

default_user

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

默认

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

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

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

# awful security practice,
# consider creating a new
# user with secure generated credentials!
loopback_users = none

要将另一个用户限制为仅 localhost 连接,请执行以下操作(monitoring 是用户的名称)

loopback_users.monitoring = true

默认

# guest uses well known
# credentials and can only
# log in from localhost
# by default
loopback_users.guest = true

cluster_formation.classic_config.nodes

经典 对等发现 后端的节点列表,用于联系。

例如,要与节点 rabbit@hostname1rabbit@hostname2 在第一次启动时集群

cluster_formation.classic_config.nodes.1 = rabbit@hostname1
cluster_formation.classic_config.nodes.2 = rabbit@hostname2

默认:none(未设置)

collect_statistics

统计信息收集模式。主要与管理插件相关。选项是

  • none(不发出统计信息事件)
  • coarse(发出每个队列/每个通道/每个连接的统计信息)
  • fine(还发出每个消息的统计信息)

默认

collect_statistics = none

collect_statistics_interval

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

默认

collect_statistics_interval = 5000

management_db_cache_multiplier

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

默认

management_db_cache_multiplier = 5

auth_mechanisms

SASL 身份验证机制,提供给客户端。

默认

# see the Access Control guide to learn more
auth_mechanisms.1 = PLAIN
auth_mechanisms.2 = AMQPLAIN
# see the Access Control and Deployment Guidelines guides to learn more
auth_mechanisms.3 = ANONYMOUS

auth_backends

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

rabbit_auth_backend_internal 之外的其他数据库可以通过 插件 获得。

默认

auth_backends.1 = internal

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

tcp_listen_options.exit_on_close 设置为 true 以使 RabbitMQ 尝试在客户端断开连接时立即关闭 TCP 套接字。请注意,这不能保证内核立即释放 TCP 套接字资源。


tcp_listen_options.keepalive = false

tcp_listen_options.keepalive 设置为 true 以启用 TCP 保持活动


cluster_partition_handling

如何处理网络分区。可用的模式是

  • ignore
  • autoheal
  • pause_minority
  • pause_if_all_down

pause_if_all_down 模式需要额外的参数

  • nodes
  • recover

有关更多信息,请参阅 有关分区的文档

默认

cluster_partition_handling = ignore

cluster_keepalive_interval

节点应以多长时间(以毫秒为单位)向其他节点发送保持活动消息。请注意,这与 net_ticktime 不一样;丢失的保持活动消息不会导致节点被认为已关闭。

默认

cluster_keepalive_interval = 10000

queue_index_embed_msgs_below

小于该大小(以字节为单位)的消息将直接嵌入队列索引中的消息的大小。建议您在更改此设置之前阅读 持久性调整 文档。

默认

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

queue_leader_locator

队列领导者位置策略。可用的策略是

  • balanced
  • client-local

默认

queue_leader_locator = client-local

proxy_protocol

如果设置为 true,RabbitMQ 将期望在打开 AMQP 连接时首先发送 代理协议 标头。这意味着在 RabbitMQ 前面设置一个与代理协议兼容的反向代理(例如 HAproxyAWS ELB)。当启用代理协议时,客户端不能直接连接到 RabbitMQ,因此所有连接都必须通过反向代理。

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

默认

proxy_protocol = false

cluster_name

操作员控制的集群名称。此名称用于识别集群,并由联邦和铲子插件用于记录传输消息的来源或路径。可以设置为任何任意字符串以帮助识别集群(例如 london)。此名称可以通过 AMQP 0-9-1 客户端在服务器属性映射中进行检查。

默认:默认情况下,该名称从集群中的第一个(种子)节点派生。

以下配置设置只能在 高级配置文件 中设置,位于 rabbit 部分下。

文档
msg_store_index_module

用于队列索引的实现模块。建议您在更改此设置之前阅读 消息存储调整 文档。

默认: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

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

默认:16777216

{rabbit, [
%% Changing this for a node
%% with an existing (initialised) database is dangerous and can
%% lead to data loss!
{msg_store_file_size_limit, 16777216}
]}

trace_vhosts

跟踪器 内部使用。您不应该更改它。

默认

{rabbit, [
{trace_vhosts, []}
]}

msg_store_credit_disc_bound

队列进程由消息存储提供的积分。

默认情况下,队列进程将获得 4000 个消息存储积分,然后每处理 800 个消息将获得 800 个积分。

由于内存压力而需要分页的消息也将使用此积分。

消息存储是积分流链中的最后一个组件。 了解积分流

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

默认

{rabbit, [
{msg_store_credit_disc_bound, {4000, 800}}
]}

queue_index_max_journal_entries

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

默认

{rabbit, [
{queue_index_max_journal_entries, 32768}
]}

随 RabbitMQ 提供的几个 插件 具有专门的文档指南,涵盖插件配置

配置值加密

敏感的 advanced.config 条目(例如密码、包含凭据的 URL)可以被加密。RabbitMQ 节点在启动时解密加密的条目。

请注意,加密的配置条目不会使系统变得更有意义的安全。然而,它们允许 RabbitMQ 的部署符合各个国家/地区的规定,这些规定要求敏感数据不应以明文形式出现在配置文件中。

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

[
{rabbit, [
{default_user, <<"guest">>},
{default_pass,
{encrypted,
<<"cPAymwqmMnbPXXRVqVzpxJdrS8mHEKuo2V+3vt1u/fymexD9oztQ2G/oJ4PAaSb2c5N/hRJ2aqP/X0VAfx8xOQ==">>
}
},
{config_entry_decoder, [
{passphrase, <<"mypassphrase">>}
]}
]}
].

请注意 config_entry_decoder 密钥,它包含 RabbitMQ 用于解密加密值的密码短语。

密码短语不必硬编码在配置文件中,它可以位于单独的文件中

[
{rabbit, [
%% ...
{config_entry_decoder, [
{passphrase, {file, "/path/to/passphrase/file"}}
]}
]}
].

RabbitMQ 也可以通过使用 {passphrase, prompt} 请求操作员在启动时输入密码短语。

使用 CLI 工具加密 advanced.config 值

使用 rabbitmqctlencode 命令来加密值

# <<"guest">> here is a value to encode, as an Erlang binary,
# as it would have appeared in advanced.config
rabbitmqctl encode '<<"guest">>' mypassphrase
{encrypted,<<"... long encrypted value...">>}
# "amqp://fred:secret@host1.domain/my_vhost" here is a value to encode, provided as an Erlang string,
# as it would have appeared in advanced.config
rabbitmqctl encode '"amqp://fred:secret@host1.domain/my_vhost"' mypassphrase
{encrypted,<<"... long encrypted value...">>}

或者,在 Windows 上

# <<"guest">> here is a value to encode, as an Erlang binary,
# as it would have appeared in advanced.config
rabbitmqctl encode "<<""guest"">>" mypassphrase
{encrypted,<<"... long encrypted value...">>}
# "amqp://fred:secret@host1.domain/my_vhost" here is a value to encode, provided as an Erlang string,
# as it would have appeared in advanced.config
rabbitmqctl encode '"amqp://fred:secret@host1.domain/my_vhost"' mypassphrase
{encrypted,<<"... long encrypted value...">>}

使用 CLI 工具解密 advanced.config 值

使用 decode 命令解密值

rabbitmqctl decode '{encrypted, <<"...">>}' mypassphrase
# => <<"guest">>
rabbitmqctl decode '{encrypted, <<"...">>}' mypassphrase
# => "amqp://fred:secret@host1.domain/my_vhost"

或者,在 Windows 上

rabbitmqctl decode "{encrypted, <<""..."">>}" mypassphrase
# => <<"guest">>
rabbitmqctl decode "{encrypted, <<""..."">>}" mypassphrase
# => "amqp://fred:secret@host1.domain/my_vhost"

不同类型的值可以被编码。上面的例子同时编码了二进制(<<"guest">>)和字符串("amqp://fred:secret@host1.domain/my_vhost")。

加密设置:密码、散列函数、迭代次数

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

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

[
{rabbit, [
...
{config_entry_decoder, [
{passphrase, "mypassphrase"},
{cipher, blowfish_cfb64},
{hash, sha256},
{iterations, 10000}
]}
]}
].

或者,使用 CLI 工具

rabbitmqctl encode --cipher blowfish_cfb64 --hash sha256 --iterations 10000 \
'<<"guest">>' mypassphrase

或者,在 Windows 上

rabbitmqctl encode --cipher blowfish_cfb64 --hash sha256 --iterations 10000 \
"<<""guest"">>" mypassphrase

使用环境变量配置

某些服务器参数可以使用环境变量进行配置:节点名称、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_FILERABBITMQ_NODENAME 变成 NODENAME

# Example rabbitmq-env.conf file entries. Note that the variables
# do not have the RABBITMQ_ prefix.
#
# Overrides node name
NODENAME=bunny@myhost

# 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-env.conf 手册页

Windows

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

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

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

可以使用安装程序或在命令行(具有管理员权限)下进行此操作

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

这将重新启动节点,使环境变量和 rabbitmq-env-conf.bat 更改对它可见。

RabbitMQ 使用的环境变量

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

在 shell 环境中设置的环境变量优先于在 rabbitmq-env.confrabbitmq-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 键,则忽略此设置。有关详细信息,请参阅 网络,有关 Windows 特定详细信息,请参阅 Windows 配置

默认值RABBITMQ_NODE_PORT + 20000

ERL_MAX_PORTS

此限制对应于内核中的 最大打开文件句柄限制。当后者设置为高于 65536 的值时,ERL_MAX_PORT 必须相应调整。

默认: 65536

ERL_EPMD_ADDRESS

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

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

ERL_EPMD_PORT

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

默认值4369

RABBITMQ_DISTRIBUTION_BUFFER_SIZE

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

默认: 128000

RABBITMQ_NODENAME

节点名称应在每个 Erlang 节点和机器组合中都是唯一的。要运行多个节点,请参阅 集群指南

默认:

  • Unix:* rabbit@$HOSTNAME

  • Windows: rabbit@%COMPUTERNAME%

RABBITMQ_CONFIG_FILE

主要的 RabbitMQ 配置文件路径,例如,/etc/rabbitmq/rabbitmq.conf/data/configuration/rabbitmq.conf(对于新式配置文件格式文件)。如果使用经典配置文件格式,扩展名必须为 .config

默认:

  • 通用 UNIX$RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf

  • Debian/etc/rabbitmq/rabbitmq.conf
  • RPM/etc/rabbitmq/rabbitmq.conf
  • MacOS(Homebrew)${install_prefix}/etc/rabbitmq/rabbitmq.conf,Homebrew 前缀通常为 /usr/local/opt/homebrew

  • Windows%APPDATA%\RabbitMQ\rabbitmq.conf

RABBITMQ_CONFIG_FILES

新式(.conf)格式的 RabbitMQ 配置文件的目录路径。这些文件将按字母顺序加载。以数字作为每个文件的开头是常见的做法。

默认:

  • 通用 UNIX$RABBITMQ_HOME/etc/rabbitmq/conf.d

  • Debian/etc/rabbitmq/conf.d
  • RPM/etc/rabbitmq/conf.d
  • MacOS(Homebrew)${install_prefix}/etc/rabbitmq/conf.d,Homebrew 前缀通常为 /usr/local/opt/homebrew

  • Windows%APPDATA%\RabbitMQ\conf.d

RABBITMQ_ADVANCED_CONFIG_FILE

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

默认:

  • 通用 UNIX$RABBITMQ_HOME/etc/rabbitmq/advanced.config

  • Debian/etc/rabbitmq/advanced.config
  • RPM/etc/rabbitmq/advanced.config
  • MacOS (Homebrew)${install_prefix}/etc/rabbitmq/advanced.config,Homebrew 前缀通常为 /usr/local/opt/homebrew

  • Windows%APPDATA%\RabbitMQ\advanced.config

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/opt/homebrew

  • Windows%APPDATA%\RabbitMQ\rabbitmq-env-conf.bat

RABBITMQ_LOG_BASE

可用于覆盖日志文件目录位置。

默认:

  • 通用 UNIX 包$RABBITMQ_HOME/var/log/rabbitmq
  • Ubuntu 和 Debian 包:/var/log/rabbitmq
  • RPM/var/log/rabbitmq
  • MacOS (Homebrew)${install_prefix}/var/log/rabbitmq,Homebrew 前缀通常为 /usr/local/opt/homebrew

  • Windows%APPDATA%\RabbitMQ\log

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/opt/homebrew

  • 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/opt/homebrew

  • Windows%APPDATA%\RabbitMQ\$RABBITMQ_NODENAME

RABBITMQ_PLUGINS_DIR

存放 插件 存档文件的位置和提取位置的目录列表。这是一个类似 PATH 的变量,其中不同的路径用操作系统特定的分隔符(Unix 为 :,Windows 为 ;)隔开。插件可以 安装 到此处列出的任何目录中。不能包含 路径限制部分 中提到的任何字符。请参阅 CLI 工具指南,了解更改此变量对 rabbitmq-plugins 的影响。

默认:

  • 通用 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/opt/homebrew

  • 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-plugins-expand
  • MacOS (Homebrew): ${install_prefix}/var/lib/rabbitmq/mnesia/$RABBITMQ_NODENAME-plugins-expand

  • Windows: %APPDATA%\RabbitMQ\$RABBITMQ_NODENAME-plugins-expand

RABBITMQ_USE_LONGNAME

当设置为 true 时,这将导致 RabbitMQ 使用完全限定名来标识节点。 这在使用完全限定域名或使用 IP 地址作为主机名或节点名的一部分的环境中可能很有用。 请注意,在不重置节点的情况下,无法将节点从短名称切换到长名称。

默认: false

RABBITMQ_SERVICENAME

已安装的 Windows 服务的名称。 这将显示在 services.msc 中。

默认: RabbitMQ。

RABBITMQ_CONSOLE_LOG

将此变量设置为 newreuse 以将服务器的控制台输出重定向到默认 RABBITMQ_BASE 目录中名为 %RABBITMQ_SERVICENAME% 的文件。

  • 如果未设置,服务器的控制台输出将被丢弃(默认)。
  • new: 每次服务启动时都会创建一个新文件。
  • reuse: 每次服务启动时都会覆盖该文件。

默认: (无)

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 命令的标准参数。 仅应出于调试目的覆盖此选项。

danger

设置此变量将替换 RabbitMQ 提供的默认值。

tip

考虑使用 RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS 添加或覆盖单个设置。

默认:

  • 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_DEFAULT_USER

此环境变量仅用于开发和 CI 环境。 这与 rabbitmq.conf 中的 default_user 具有相同的含义,但优先级更高。 此选项在提供配置文件不可能,环境变量是 播种用户 的唯一方法的情况下可能更方便。

默认: (无)

RABBITMQ_DEFAULT_PASS

此环境变量仅用于开发和 CI 环境。 这与 rabbitmq.conf 中的 default_pass 具有相同的含义,但优先级更高。 此选项在提供配置文件不可能,环境变量是 播种用户 的唯一方法的情况下可能更方便。

默认: (无)

RABBITMQ_DEFAULT_VHOST

此环境变量仅用于开发和 CI 环境。 这与 rabbitmq.conf 中的 default_vhost 具有相同的含义,但优先级更高。 此选项在提供配置文件不可能,环境变量是 播种用户 和虚拟主机的唯一方法的情况下可能更方便。

默认: (无)

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

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

名称描述
HOSTNAME

当前机器的名称。

默认:

  • Unix、Linux: env hostname
  • MacOS: env hostname -s

COMPUTERNAME

当前机器的名称。

默认:

  • Windows: localhost

ERLANG_SERVICE_MANAGER_PATH

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

默认:

  • Windows 服务: %ERLANG_HOME%\erts-<var>x.x.x</var>\bin

操作系统内核限制

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

RabbitMQ 节点最常受到最大 打开的文件句柄限制 的影响。 大多数 Linux 发行版上的默认限制值通常为 1024,这对于消息代理(或通常来说,任何数据服务)来说非常低。 有关推荐值,请参阅 部署指南

修改限制

使用 systemd(现代 Linux 发行版)

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

[Service]
LimitNOFILE=64000

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

使用 Docker

要为 Docker 容器配置内核限制,请在 Docker 守护进程配置文件 中使用 "default-ulimits" 键。 该文件必须安装在 Docker 主机上的 /etc/docker/daemon.json

{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 64000,
"Soft": 64000
}
}
}

不使用 systemd(较旧的 Linux 发行版)

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

ulimit -S -n 4096

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

请注意,无法更改正在运行的操作系统进程的限制。

© 2024 RabbitMQ. All rights reserved.