You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka消费者重启后所有offset全部消失是什么原因?

故障根因

  • 核心触发条件是Kafka broker端内置的位移过期清理策略:Kafka 用于存储消费者组位移的内部主题__consumer_offsets默认配置offsets.retention.minutes = 10080,即位移数据默认保留7天。仅当消费者组内无任何活跃实例,且该组最后一次提交位移的时间超过保留阈值时,该组的所有位移数据会被清理线程永久删除。
  • 你的场景刚好匹配该触发逻辑:服务连续运行的7天内,消费者实例属于活跃状态,broker不会清理对应消费者组的位移,因此服务运行期间消费逻辑完全正常;当你触发服务重启时,所有消费者实例短暂全部下线,broker检查到该消费者组无活跃实例,同时最后一次提交位移的时间已经达到7天的保留阈值,直接清理了该组的全部位移数据。
  • 重启后消费者重新上线时,无法在__consumer_offsets中查到对应消费者组的位移记录,会按照消费者端配置auto.offset.reset的规则执行,如果你配置的是earliest,就会从头拉取所有历史消息,和你遇到的现象完全一致。

offset去向

  • 你通过consumer.commitSync(offsetAndMetadataMap)提交的所有offset,全部被__consumer_offsets主题的清理线程按照过期策略永久删除,没有其他存储位置,无法直接恢复。
  • 可选修复/规避方案:
    1. 调整broker端offsets.retention.minutes配置到更大值,匹配你的业务场景的最长无提交间隔要求
    2. 优化业务代码的offset提交逻辑,确保提交间隔远小于位移保留时间
    3. 必要时可以将offset额外存储到外部数据库(如MySQL、Redis),重启时优先从外部存储读取offset重置消费位置

内容的提问来源于stack exchange,提问作者Леонид Дубравский

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 02:54:02