在生产环境中遇到 Kafka 消息积压(Lag 持续增大)是一个非常典型的线上故障。解决这个问题的核心逻辑是:先止血恢复业务,再排查根本原因,最后做系统性优化。 Kafka 消息积压的本质只有两个原因:生产速度突然飙升,或者 消费速度变慢/停滞。 以下是标准排查和解决全流程: --- 第一阶段:紧急止血(如果业务已受严重影响) 1. 评估 Broker 风险:监控 Kafka 集群的磁盘使用率。如果积压导致磁盘快满了,必须立刻采取行动(如清理旧数据、扩容磁盘),否则 Broker 宕机会导致整个集群不可用。 2. 快速扩容消费者:如果当前消费者实例数 < Topic 的 Partition(分区)数,立刻增加消费者实例。 注意:Kafka 的一个 Partition 只能被同一个 Consumer Group 中的一个 Consumer 消费。如果消费者数量已经等于分区数,继续加机器是无效的。 3. 降级与熔断:如果是因为下游服务(如 DB、第三方 API)故障导致消费变慢,评估是否可以开启服务降级,直接丢弃非核心消息,或将消息写入本地日志/Redis,先让消费线程跑起来。 --...