标准答案
- 同时观察每个分区的 lag、最老消息年龄、生产速率、成功消费速率、失败重试和重平衡次数。
- 确认消费者是否受分区数量、线程池、连接池、批大小、锁等待或单个慢分区限制。
- 检查数据库、HTTP 服务、搜索或对象存储的延迟和限流,避免扩容消费者把下游打垮。
- 必要时按优先级降级、暂停低价值生产、增加分区或临时扩容,并定义积压清零和数据正确性标准。
题目解析
积压是生产速率高于有效消费速率的结果。排查要区分生产突然增加、消费者重平衡、分区热点、处理耗时增加、重试和下游容量不足,不能只看一个总 lag。
扩容消费者只有在分区数、执行槽和下游连接都允许时才有效。若数据库或 HTTP 服务已经饱和,扩容会把积压变成更高错误率和更多重复。
恢复验收除了积压清零,还要看最老消息年龄、重复率、顺序、业务状态和数据对账。通过跳过消息换来的 lag 下降,不能被当成消费恢复。
常见误区
- 误区:只看总 lag。改正:按分区看 lag、最老消息年龄、生产/消费速率和重平衡。
- 误区:不确认下游容量就加消费者。改正:先定位最窄瓶颈,按分区和连接预算逐步扩容。
- 误区:用丢消息换取表面上的积压下降。改正:记录跳过原因并转入可恢复的死信或补偿路径,不能静默丢失。