Skip to content
Kafka 可靠性与故障治理 · 第 4 篇 / 共 4 篇
领域数据与中间件
专题Kafka 专题
当前序列Kafka 可靠性与故障治理
阅读位置第 4 篇 / 共 4 篇当前专题第 2 个序列 / 共 6 个序列

Kafka 消息积压排查:Lag 为什么会涨,先查消费慢还是分区不均

Kafka 一旦进入生产环境,最常见的运维问题之一就是:

  • 消息积压

表象通常是:

  • Lag 持续上涨
  • 消费延迟越来越大
  • 业务异步链路开始滞后

先说结论

排查 Kafka 积压时,最实用的顺序通常是:

  1. 先看消费端是不是慢了或异常了
  2. 再看分区和负载是否不均
  3. 再看下游依赖是不是拖慢了整个消费链路
  4. 最后再考虑扩分区、扩实例或重构模型

不要一看到 lag 涨就先扩容。

一、Lag 到底是什么

可以先粗略理解成:

  • 生产进度和消费进度之间的差值

如果这个差值持续扩大,就说明:

  • 消费赶不上生产

二、最常见的积压原因有哪些

1. 消费逻辑变慢

例如:

  • 业务代码变重
  • 远程调用变慢
  • 数据库写入变慢

2. 消费者异常但没完全挂

例如:

  • 持续报错重试
  • 某些分区消费线程卡住

3. 分区热点不均

某些分区特别忙,导致某几个消费者压力远高于其他实例。

4. 生产流量突然升高

活动、批量任务、异常重放都可能让消息量激增。

三、为什么“先查消费端”最重要

因为在大多数真实场景里,积压的根因通常不在 Kafka 本身,而在:

  • 消费业务逻辑
  • 下游依赖

也就是说,Kafka 常常只是把问题“显露出来”,不是源头。

四、排查更实用的顺序

第一步:先看是否有报错和重试

这是最基础的一步。

很多积压本质上只是:

  • 消费在反复失败

第二步:看单条消息处理耗时

如果原来 10ms 处理完,现在变成 500ms,lag 涨起来很正常。

第三步:看分区分布是否均匀

如果数据倾斜明显,你可能会发现:

  • 某些分区 lag 很高
  • 某些分区几乎没压力

第四步:看消费组是否频繁 rebalance

rebalance 过于频繁也会放大消费抖动。

五、什么时候才该考虑扩容

当你已经确认:

  • 消费逻辑没有明显异常
  • 下游依赖也没有拖慢
  • 当前实例和分区并行确实不足

这时再去考虑:

  • 增加消费者实例
  • 增加分区数

会更合理。

六、几个特别容易踩的坑

1. 只看总 lag,不看分区 lag

这样很容易忽略数据倾斜问题。

2. 一积压就盲目扩容

如果根因是下游接口慢,扩容只会把压力更快打到下游。

3. 消费线程里做太重的阻塞操作

这会把本来应该“快进快出”的消息消费链路拖成串行瓶颈。

一句话总结

Kafka 积压排查最关键的是先分清:

  • 是生产变快了
  • 还是消费变慢了
  • 是整体都慢
  • 还是少数分区热点特别重

把这个判断顺序理顺后,Lag 问题通常会比想象中更容易拆开。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 回看前文会更完整Kafka 重复消费治理案例适合把顺序性、幂等、重试、死信和消息积压放在一条线上连续看。Kafka 专题 · Kafka 可靠性与故障治理同一序列 · 回看前文会更完整Kafka 重试与死信怎么设计适合把顺序性、幂等、重试、死信和消息积压放在一条线上连续看。Kafka 专题 · Kafka 可靠性与故障治理同专题其他序列 · 共享标签:线上排障、案例排障Kafka Broker 磁盘打满前有哪些信号适合把 Rebalance、offset 提交、重试层级和 Broker 磁盘状态放在同一条 Kafka 消费治理主线上看。Kafka 专题 · Kafka 消费治理与运维观察同专题其他序列 · Kafka 投递链路与日志存储机制保留策略和日志压缩适合哪些场景适合把副本机制、acks、批量压缩和日志组织放在一条 Kafka 投递主线上理解。Kafka 专题 · Kafka 投递链路与日志存储机制跨专题关联 · 共享标签:线上排障、案例排障磁盘打满后为什么删除文件不一定立刻生效适合把 Redis 抖动、MySQL 连接打满、MQ 积压、ES 发黄、ClickHouse 合并堆积和磁盘打满放在同一条基础设施排障主线上看。数据与基础设施排障专题 · 数据与基础设施故障的分层排查跨专题关联 · 共享标签:线上排障、案例排障大 Header、buffer、timeout 问题怎么排查适合把 location 匹配、缓冲区和负载均衡放在一起看。容器与站点部署专题 · Nginx 进阶路由与代理治理
继续阅读Kafka 可靠性与故障治理当前序列第 4 篇 / 共 4 篇当前专题第 2 个序列 / 共 6 个序列
往前看
上一篇Kafka 重复消费治理案例回到当前序列上一章上一序列消息系统选型与 Kafka 基础从第 1 篇开始:MQ 为什么要用,以及怎么保证消息可靠
往后看
下一序列Kafka 高级投递与消费治理从第 1 篇开始:Kafka 分区键怎么设计更稳

把零散经验整理成可查、可复用、可持续更新的企业级知识门户