这篇会介绍如何查看并调整消费超时时间。
一、约束与限制
集群的 consumer_timeout 默认值和可调整范围如下:
·开源托管版集群:默认 30min,可调整范围是 30min ~ 7天。
·Serverless 版集群:默认 30min,暂时不支持手动调整。
注意:集群的 consumer_timeout 太大可能会引起集群的稳定性问题:
注意:1. 消息堆积增多:unack 消息增多,容易造成 queue 整体消费延迟,导致大量消息堆积。
注意:2. 内存负载升高:unack 消息默认存储在 Broker 的内存中,consumer_timeout 过大且在高并发场景下,大量 unack 消息会持续占用内存,导致内存负载过高,影响消息读写。
注意:调整 consumer_timeout 的建议:
注意:1. 基于业务实际处理时间来设置,留足缓冲但不要冗余太多。可以优先统计业务的 P99 处理时间,consumer_timeout 不建议超过 P99 时间的2倍。若存在分钟级的超长处理任务(如大文件解析、批量数据同步),不建议直接调大 consumer_timeout,而是拆分为多个短任务,避免单个消息占用资源过久。
注意:2. 联动调整 prefetch_count 参数。consumer_timeout 调大时,可以适当降低 prefetch_count,确保单消费者的 unack 消息数 x 单消息处理时间 < consumer_timeout,从而避免单个消费者占用过多 unack 消息。
注意:3. 开启手动 ACK 和消息持久化。禁用自动 ACK(auto_ack=false),采用手动 ACK,确保只有消息处理完成后才发送确认信号。
二、操作步骤
1. 登录 TDMQ RabbitMQ 控制台。
2. 在左侧导航栏选择集群管理 > 集群列表,找到需要调整 consumer_timeout 参数的集群,单击进入集群详情页。
3. 在配置信息中,找到消费者超时时间,单击调整配置按钮,调整参数后点击提交。