Kafka消费积压如何排查?

Kafka是大型架构核心,下面我详解Kafka消费积压如何排查@mikechen

先确认是否真的“积压”

Kafka出现消费积压时,排查可以按“先确认现象。

再找瓶颈点(生产、消费、Broker)、最后制定缓解方案”的思路来做。

Kafka消费积压如何排查?-mikechen

在监控或命令行中,查看每个分区的 LogEndOffset 和消费者组的 Consumer Offset,计算 Lag 是否持续增大而不是短时抖动。

kafka-consumer-groups.sh \
--bootstrap-server broker:9092 \
--group your-group \
--describe

确认积压是集中在少数分区还是所有分区。

以及是否只影响某一个消费者组,避免误判成网络或 Broker 故障。

快速定位是“生产快”还是“消费慢”

对比生产 TPS 、和消费 TPS。

Kafka消费积压如何排查?-mikechen

如果生产明显大于消费,并且消费者实例负载不高。

一般是消费者侧逻辑慢、或线程数不足。

检查消费者进程是否存在频繁 Rebalance、宕机、异常重启等现象。

 

消费逻辑慢(业务代码拖慢)

常见慢点:

Kafka消费积压如何排查?-mikechen

同步 RPC / HTTP 调用;

同步写数据库(尤其是单行写);

重度序列化 / JSON 转换;

本地锁竞争;

排查方式:

打印单条消息处理耗时;

观察 poll() 到 commit() 时间。

集群与分区层面的排查

查看 topic 分区数与消费者实例数是否匹配,如果分区太少。

Kafka消费积压如何排查?-mikechen

即使加机器也无法提升并行度,需要考虑扩分区或新建临时 topic 做旁路消费。

检查 Broker 端是否存在磁盘、网络、控制器选举等问题。

或限流、配额导致拉取速度上不去,这类问题会表现为消费者 poll 到的数据量很少。

mikechen睿哥

10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。

评论交流
    说说你的看法