kafka-consumer-lag

Kafka 消费积压的定位与修复

现象

消费者 lag 持续增长,消息延迟变大;监控显示某些分区积压严重,但其他分区正常。严重时消费者被踢出组或频繁 rebalance。

快速定位

kafka-consumer-groups --bootstrap-server <broker>:9092 \
  --describe --group <group>
kafka-topics --bootstrap-server <broker>:9092 --describe --topic <topic>
kcat -b <broker>:9092 -t <topic> -G <group> -o end -c 1

消费者与 broker:

journalctl -u <consumer-service> --since '30 min ago'
ss -ti | grep <broker-ip>

常见根因

  1. 消费逻辑慢:同步 I/O、外部调用、数据库写入瓶颈。
  2. 分区数不足,消费者数量超过分区数,部分实例空闲。
  3. 消费线程阻塞或批量参数不合理。
  4. 频繁 rebalance:max.poll.interval.ms 太短、消费者重启或网络抖动。
  5. 分区数据倾斜,热点分区拖慢整体。
  6. broker/网络瓶颈,或副本同步影响读取。

修复

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. lag 只集中在部分分区,说明问题更可能是全局消费慢还是数据倾斜?
  2. 消费者实例数超过分区数会怎样?
  3. 频繁 rebalance 常见原因和调整方向是什么?
答案
  1. 更像分区数据倾斜或热点分区,而不是所有消费者都慢。页面建议先按分区看 lag 判断。
  2. 多出的消费者会空闲,因为一个分区同时只能由一个消费者消费。消费者数不要超过分区数。
  3. 常见于 max.poll.interval.ms 太短、消费者重启或网络抖动。可调整 max.poll.records、max.poll.interval.ms 和心跳参数。