Broker请求快速失败开关配置项检查
巡检规则
本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。
检测数据源
Broker请求快速失败开关配置项的检测数据源是目标集群 BrokerConfig 信息,通过读取目标集群当前生效的配置,判断是否处于异常和风险的状态。
检测周期
- 每 10 分钟一次。
- 不可关闭。
异常检测逻辑
[BrokerConfig#brokerFastFailureEnable](https://github.com/apache/rocketmq/blob/release-4.9.4/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java#L124C21-L124C44) = false,则产生异常事件。
事件和风险
RocketMQ Copilot 系统巡检会对检测不通过的规则产生异常事件和风险,异常事件遵循 概述▸ 。
异常事件
- 异常事件类型:copilot:cluster:BrokerFastFailureEnableInspectionFailed
- 关于事件的详细 schema 定义,异常事件:服务端快速失败被禁用▸ 。
异常风险
- 关联的风险类型:服务端快速失败被禁用。
风险分析
Broker 如果启用快速失败配置选项,会将其堆积在业务线程池中的堆积的消息发送/消息拉取/心跳/事务任务进行清理,在对客户端及时返回错误信息的同时可以让队列排序较后的请求及时得到处理。
启用该选项可以一定程度上缓解业务线程池里任务排队的情况,但是无法彻底解决线程池中任务排队的问题。比如消息拉取如果有大量任务在业务线程池中有排队的情况,应该尝试从是否存在冷读等方向进行排查而尝试彻底解决。
如果禁用该开关可能会导致任务出现排队时,更多数量的请求堆积在服务端的业务线程池队列中从而导致客户端出现更持久,更大面积的超时。
运维建议
建议 1:生产环境开启快速失败配置
生产环境建议开启该开关。
建议 2:增加上下游调用性能监控
当前开关仅仅是在异常情况下能快速清理无效的请求,但本质上还是需要增加生产端、消费端的业务性能监控,及时发现慢处理的原因。