RocketMQ NameServer 的配置项

摘要

  • 本文介绍 RocketMQ NameServer 的配置项。

  • RocketMQ官网

  • 本文使用的 RocketMQ 版本为 5.3.2。

查看 NameServer 配置项

1
2
3
4
# 查看默认配置项
sh bin/mqnamesrv -p
# 查看加载了指定配置文件后的配置项,即配置文件中的配置项会覆盖默认配置项
sh bin/mqnamesrv -p -c conf/namesvr.conf

配置项项目源码简介

  • 在源码 rocketmq-all-5.3.2-source-release/namesrv 的启动类 org.apache.rocketmq.namesrv.NamesrvStartup中 可以看到其启动时会初始化如下配置项的类

1
2
3
4
private static NamesrvConfig namesrvConfig = null;
private static NettyServerConfig nettyServerConfig = null;
private static NettyClientConfig nettyClientConfig = null;
private static ControllerConfig controllerConfig = null;

配置项说明

  • NameServer 配置项说明与建议

参数名 默认值 参数说明 优化 / 建议
rocketmqHome /usr/local/soft/rocketmq/rocketmq5 RocketMQ 安装目录 不建议修改
kvConfigPath /root/namesrv/kvConfig.json KV 配置存储路径 ✅ 改为 /data/rocketmq/namesrv/kvConfig.json 更规范
configStorePath /root/namesrv/namesrv.properties NameServer 启动配置文件路径 ✅ 放在非 root 路径下 /etc/rocketmq/namesrv.properties
productEnvName center 产品环境名称标识 可用于区分环境(dev/test/prod)
clusterTest false 是否启用集群测试模式 默认 false,生产勿启用
orderMessageEnable false 是否开启顺序消息功能 NameServer 一般无需开启
returnOrderTopicConfigToBroker true 是否返回顺序消息主题配置给 broker 保持默认
clientRequestThreadPoolNums 8 客户端请求线程数 ✅ 若 NameServer 负载高可增至 16~32
defaultThreadPoolNums 16 默认线程池线程数 视 CPU 核心数调整
clientRequestThreadPoolQueueCapacity 50000 客户端请求队列长度 ✅ 高并发环境可调高至 100000
defaultThreadPoolQueueCapacity 10000 默认任务队列长度 适度提高防止拒绝任务
scanNotActiveBrokerInterval 5000 扫描失效 Broker 的间隔(ms) 默认 5s,可保持
unRegisterBrokerQueueCapacity 3000 Broker 注销队列容量 默认即可
supportActingMaster false 是否支持 ActingMaster 功能 ✅ 若启用 controller 建议设为 true
enableAllTopicList true 是否启用所有主题列表接口 可保持
enableTopicList true 是否允许主题列表查询 可保持
notifyMinBrokerIdChanged false 是否通知最小 brokerId 变化 一般无需开启
enableControllerInNamesrv false 是否在 NameServer 中启用 Controller 模块 ✅ 若部署简化集群可考虑 true(测试环境)
needWaitForService false 是否等待服务就绪再启动 可保持
waitSecondsForService 45 启动等待时间 可保持
deleteTopicWithBrokerRegistration false 注册时是否删除 topic 默认即可
configBlackList configBlackList;configStorePath;kvConfigPath 黑名单配置项 保持默认
bindAddress 0.0.0.0 绑定的监听地址 ✅ 生产环境建议绑定内网 IP
listenPort 9876 NameServer 监听端口 ✅ 可通过防火墙限制外部访问
serverWorkerThreads 8 服务端业务处理线程数 可根据负载调整
serverCallbackExecutorThreads 0 回调执行线程数 0 表示自动设置
serverSelectorThreads 3 Selector 线程数 一般 2~4 即可
serverOnewaySemaphoreValue 256 单向请求并发限制 可保持
serverAsyncSemaphoreValue 64 异步请求并发限制 可保持或略增
serverChannelMaxIdleTimeSeconds 120 连接空闲关闭时间 可调大到 300 提高容错
serverSocketSndBufSize 0 TCP 发送缓冲区大小 0 表示使用系统默认
serverSocketRcvBufSize 0 TCP 接收缓冲区大小 建议 131072(128KB)以上
writeBufferHighWaterMark 0 写缓冲高水位标记 默认即可
writeBufferLowWaterMark 0 写缓冲低水位标记 默认即可
serverSocketBacklog 1024 TCP 连接等待队列 ✅ 高并发场景可调大至 2048
serverNettyWorkerGroupEnable true 是否启用 Netty worker 线程组 默认 true
serverPooledByteBufAllocatorEnable true 是否启用 Netty 池化内存 建议保持
enableShutdownGracefully false 是否优雅关闭 ✅ 建议设为 true
shutdownWaitTimeSeconds 30 优雅关闭等待时间 建议 30~60
useEpollNativeSelector false 是否启用 Linux Epoll ✅ Linux 环境建议设为 true 提高性能
clientWorkerThreads 4 客户端 worker 线程数 默认即可
clientCallbackExecutorThreads 2 客户端回调线程数 默认即可
clientOnewaySemaphoreValue 65535 客户端单向请求并发限制 默认即可
clientAsyncSemaphoreValue 65535 客户端异步请求并发限制 默认即可
connectTimeoutMillis 3000 连接超时(ms) ✅ 可提高至 5000 增加容错
channelNotActiveInterval 60000 检查通道非活动间隔 默认即可
isScanAvailableNameSrv true 是否扫描可用 NameServer 保持
clientChannelMaxIdleTimeSeconds 120 客户端空闲连接超时 默认即可
clientSocketSndBufSize 0 客户端 TCP 发送缓冲区 建议 131072
clientSocketRcvBufSize 0 客户端 TCP 接收缓冲区 建议 131072
clientPooledByteBufAllocatorEnable false 客户端是否启用池化 ✅ 建议设为 true 提高性能
clientCloseSocketIfTimeout true 超时是否关闭 socket 保持默认
useTLS false 是否启用 TLS 通信 ✅ 若公网部署强烈建议开启
socksProxyConfig {} SOCKS 代理配置 内网部署无需设置
disableCallbackExecutor false 是否禁用回调执行器 默认即可
disableNettyWorkerGroup false 是否禁用 Netty worker group 默认即可
maxReconnectIntervalTimeSeconds 60 最大重连间隔 默认即可
enableReconnectForGoAway true 是否启用 goaway 自动重连 保持 true 增强健壮性
  • 推荐重点优化的关键项

类别 参数 推荐值 原因
性能 useEpollNativeSelector true Linux 性能显著提升
安全 bindAddress 内网 IP 防止暴露公网
安全 useTLS true(公网) 启用加密传输
健壮性 enableShutdownGracefully true 防止强制关闭导致状态不一致
负载 clientRequestThreadPoolNums 16~32 提高并发能力
网络 serverSocketBacklog 2048 减少连接拒绝
缓冲 serverSocketSndBufSize / RcvBufSize 131072 提高网络吞吐
文件路径 kvConfigPath / configStorePath 非 root 路径 避免权限问题