Skip to main content

默认 Topic 队列数配置项检查

巡检规则

本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。

检测数据源

默认 Topic 队列数配置项的检测数据源是目标集群 BrokerConfig 信息,通过读取目标集群当前生效的配置,判断是否处于异常和风险的状态。

检测周期

  • 每 10 分钟一次。
  • 可关闭。

异常检测逻辑


[BrokerConfig#defaultTopicQueueNums](https://github.com/apache/rocketmq/blob/release-4.9.4/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java#L45C17-L45C38) 小于 8 ,则产生异常事件。

事件和风险

RocketMQ Copilot 系统巡检会对检测不通过的规则产生异常事件和风险,异常事件遵循 概述▸

异常事件

风险分析

默认 Topic 队列数只有在 Topic 自动创建开关启用时才有意义,会直接决定 TBW102 的队列数,同时会通过 min(DefaultMQProducer#defaultTopicQueueNums, BrokerConfig#defaultTopicQueueNums) 计算自动创建的 Topic 的读写队列数。

风险

如果和 DefaultMQProducer#defaultTopicQueueNums 同时配置过大会导致 Broker 上产生过多队列,对应的 Consume Queue 会增多,带来更多的随机磁盘 IO,从而影响 Consume Queue 的分发效率,延长 Broker 启动以及异常宕机时的 Recovery 时间。

运维建议

建议 1:生产环境关闭自动创建 Topic

生产环境建议关闭自动创建 Topic,则无需再关注此默认队列数配置。

建议 2:合理分配每个 Topic 的队列数

生产环境创建 Topic 时根据实际的消息吞吐和并发度合理指定队列数,一般单机 8 个队列足够使用,避免设置过多队列。