标准答案

  1. 同时观察每个分区的 lag、最老消息年龄、生产速率、成功消费速率、失败重试和重平衡次数。
  2. 确认消费者是否受分区数量、线程池、连接池、批大小、锁等待或单个慢分区限制。
  3. 检查数据库、HTTP 服务、搜索或对象存储的延迟和限流,避免扩容消费者把下游打垮。
  4. 必要时按优先级降级、暂停低价值生产、增加分区或临时扩容,并定义积压清零和数据正确性标准。

题目解析

积压是生产速率高于有效消费速率的结果。排查要区分生产突然增加、消费者重平衡、分区热点、处理耗时增加、重试和下游容量不足,不能只看一个总 lag。

扩容消费者只有在分区数、执行槽和下游连接都允许时才有效。若数据库或 HTTP 服务已经饱和,扩容会把积压变成更高错误率和更多重复。

恢复验收除了积压清零,还要看最老消息年龄、重复率、顺序、业务状态和数据对账。通过跳过消息换来的 lag 下降,不能被当成消费恢复。

常见误区

  • 误区:只看总 lag。改正:按分区看 lag、最老消息年龄、生产/消费速率和重平衡。
  • 误区:不确认下游容量就加消费者。改正:先定位最窄瓶颈,按分区和连接预算逐步扩容。
  • 误区:用丢消息换取表面上的积压下降。改正:记录跳过原因并转入可恢复的死信或补偿路径,不能静默丢失。

作者信息