参数配置

RabbitMQ 实例默认使用 RabbitMQ 提供的系统参数。您也可以通过界面方便地配置参数。

提示

升级 RabbitMQ 后,如果有需要删除、弃用或更改的参数,请参考 RabbitMQ 官方网站 获取相应的更改信息。

警告

更新参数会导致实例重启。为了应用程序的稳定性,请在非高峰时段更新参数。

步骤

命令行接口
Web 控制台

实例的数据节点参数通过 RabbitMQ CR 资源的 spec.rabbitmq.additionalConfig 字段进行指定。

# 更新 s6 实例的数据节点配置
$ kubectl -n default patch rabbitmqclusters <实例名> --type=merge --patch='{"spec": {"rabbitmq": {"additionalConfig":"channel_max=1000"}}}''

参数支持说明

参数名称参数描述值范围默认值
num_acceptors.tcp接受 TCP 监听器连接的 Erlang 进程数量。-num_acceptors.tcp = 10
handshake_timeoutAMQP 0-9-1 握手的最大时间(在套接字连接和 TLS 握手之后),单位为毫秒。-handshake_timeout = 10000
vm_memory_high_watermark.relative流控制被触发的内存阈值。可以是绝对值或相对于操作系统可用内存的比例。-vm_memory_high_watermark.relative = 0.4
vm_memory_calculation_strategy内存使用情况报告的策略allocated

rss

legacy

erlang
vm_memory_calculation_strategy = allocated
vm_memory_high_watermark_paging_ratio开始将消息分页到磁盘以释放内存的高水位限制的百分比。请参见 基于内存的流控制 文档。-vm_memory_high_watermark_paging_ratio = 0.5
total_memory_available_override_value允许覆盖可用的总内存量,而不是通过操作系统特定的方法推断这个值。这应仅在节点可用的实际最大内存量与节点推断的值不匹配时使用,例如,由于容器化或节点未知的类似约束。该值可以设置为字节的整数,也可以以可读单位(例如 8GB)设置。例如,当设置为 4 GB 时,节点认为它在一台具有 4 GB RAM 的机器上运行。--
disk_free_limit.absoluteRabbitMQ 存储数据的分区的磁盘可用空间限制。当可用磁盘空间低于此限制时,将触发流控制。该值可以相对于总内存量设置,或作为字节的绝对值,也可以以可读单位(例如 50MB5GB)设置。-disk_free_limit.absolute = 50MB
log.file.level控制日志记录的粒度。该值是日志事件类别和日志级别对的列表。error

warning

info

debug
log.file.level = info
channel_max与客户端协商的最大可允许通道数,不包括协议中使用的特殊通道号 0。将其设置为 0 意味着“无限”。这是一个危险的值,因为应用程序有时可能会出现通道泄漏。使用更多通道会增加代理的内存占用。-channel_max = 2047
channel_operation_timeout通道操作超时,以毫秒为单位(内部使用,由于消息协议的差异和限制,未直接暴露给客户端)。-channel_operation_timeout = 15000
max_message_size允许的最大消息负载大小(以字节为单位)。大于此大小的消息将被拒绝,并提供适当的通道异常。最大值: 536870912max_message_size = 134217728
heartbeat表示服务器在连接参数协商期间建议的心跳超时的值。如果在两端都设置为 0,则禁用心跳(这不推荐)。有关详细信息,请参见 心跳指南-heartbeat = 60
default_vhostRabbitMQ 从头创建新数据库时创建的虚拟主机。amq.rabbitmq.log 将存在于此虚拟主机中。-default_vhost = /
collect_statistics统计收集模式。主要与管理插件相关。none

coarse

fine
collect_statistics = none
collect_statistics_interval统计收集间隔,以毫秒为单位。主要与 管理插件 相关。-collect_statistics_interval = 5000
management_db_cache_multiplier影响 管理插件 缓存昂贵管理查询(例如队列列表)的时间量。缓存将最后查询经过的时间乘以此值,并在此持续时间内缓存结果。-management_db_cache_multiplier = 5
delegate_count用于集群内部通信的代表进程数。在具有非常大量内核并且也属于集群的机器上,您可能希望增加此值。-delegate_count = 16
hipe_compile不要使用。此选项不再受支持。自 Erlang 22 开始已删除 HiPE 支持。-hipe_compile = false
cluster_partition_handling处理网络分区的方式。ignore

autoheal

pause_minority

pause_if_all_down
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
mirroring_sync_batch_size用于将消息传输到未同步副本(队列镜像)的批量大小。有关更多信息,请参见 急切批量同步 的文档。-mirroring_sync_batch_size = 4096
queue_master_locator队列领导者位置策略。可用策略为min-masters

client-local

random
queue_master_locator = client-local

有关更多支持的参数,请参阅 RabbitMQ 官方网站