百万消息积压的两小时,我们做了什么

举报
yd_264617019 发表于 2026/11/04 08:40:06 2026/11/04
【摘要】 周五22点告警:核心topic消费lag从2万涨到100万,还在爬。把处理时间线记下来,这类事故的应对本身值得复用。第一步定位为什么积压。消费组监控显示三台消费者CPU正常、GC正常,但消费速率从4000每秒掉到300。消费者日志里大量处理超时——下游风控接口故障,每次调用挂30秒才超时。瓶颈不在Kafka,在消费逻辑里的同步外部调用。第二步止血三板斧:下游调用超时从30秒降到2秒(配置中心...

周五 22 点告警:核心 topic 消费 lag 从 2 万涨到 100 万,还在爬。把处理时间线记下来,这类事故的应对本身值得复用。

第一步定位为什么积压。消费组监控显示三台消费者 CPU 正常、GC 正常,但消费速率从 4000 每秒掉到 300。消费者日志里大量处理超时——下游风控接口故障,每次调用挂 30 秒才超时。瓶颈不在 Kafka,在消费逻辑里的同步外部调用。

第二步止血三板斧:下游调用超时从 30 秒降到 2 秒(配置中心秒级下发);非关键校验逻辑用预埋的开关摘除;消费者临时扩到 10 个(分区数 12,天花板就在这)。消费速率回到 5000 每秒,40 分钟消化完积压。

第三步防复发,落到消费参数和熔断:

# 消费者关键参数
max:
  poll:
    records: 100        # 单批拉小,防单批处理超时
poll:
  interval:
    ms: 300000          # 两次 poll 最大间隔,超时触发重平衡

max.poll.records 调小配合 poll.interval 是防重平衡的组合:单批处理时间必须小于间隔上限,否则消费者被踢出组,重平衡雪上加霜。外部依赖全部包熔断(失败率 50% 打开、半开探测),下游故障时走快速失败加小重试。告警阈值从 lag 十万改成一万,另配增速告警。

复盘一句话:积压是症状,病因几乎总在消费端的外部依赖。扩消费者只是最后手段,分区数就是天花板——平时按故障场景演练过,才知道极限在哪。那次之后每季度一次积压演练成了固定动作。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。