欢迎光临八叔引擎之家,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

八叔引擎之家

线上Kafka突发rebalance异常,如何快速解决?
行业应用 2021-02-17

文章首发于【陈树义的博客】,点击跳转到原文《线上Kafka突发rebalance异常,如何快速解决?》

什么是消费组

Removed ✘✘✘ expired offsets in ✘✘✘ milliseconds.

什么是rebalance?

文章首发于【陈树义的博客】,点击跳转到原文《线上Kafka突发rebalance异常,如何快速解决?》

rebalance的流程

JoinGroup请求

SyncGroup请求

什么时候会发生rebalance?

  • 订阅 Topic 的分区数发生变化。
  • 订阅的 Topic 个数发生变化。
  • 消费组内成员个数发生变化。例如有新的 consumer 实例加入该消费组或者离开组。

订阅Topic的分区数发生变化

订阅的Topic个数发生变化

消费组内成员个数发生变化

文章首发于【陈树义的博客】,点击跳转到原文《线上Kafka突发rebalance异常,如何快速解决?》

  • 新成员加入
  • 组成员主动离开
  • 组成员崩溃

新成员加入

组成员主动离开

组成员崩溃

疑惑

rebalance问题处理思路

  • 新成员加入
  • 组成员主动离开
  • 组成员崩溃
  • session.timeout.ms 设置了超时时间
  • heartbeat.interval.ms 心跳时间间隔
  • max.poll.interval.ms 每次消费的处理时间
  • max.poll.records 每次消费的消息数
  • 消费者心跳超时,导致 rebalance。
  • 消费者处理时间过长,导致 rebalance。

消费者心跳超时

  • session.timeout.ms 设置了超时时间
  • heartbeat.interval.ms 心跳时间间隔

消费者处理时间过长

  • max.poll.interval.ms 每次消费的处理时间
  • max.poll.records 每次消费的消息数
  • 对于心跳超时问题。一般是调高心跳超时时间(session.timeout.ms),调整超时时间(session.timeout.ms)和心跳间隔时间(heartbeat.interval.ms)的比例。阿里云官方文档建议超时时间(session.timeout.ms)设置成 25s,最长不超过 30s。那么心跳间隔时间(heartbeat.interval.ms)就不超过 10s。
  • 对于消费处理超时问题。一般是增加消费者处理的时间(max.poll.interval.ms),减少每次处理的消息数(max.poll.records)。阿里云官方文档建议 max.poll.records 参数要远小于当前消费组的消费能力(records < 单个线程每秒消费的条数 x 消费线程的个数 x session.timeout的秒数)。

文章首发于【陈树义的博客】,点击跳转到原文《线上Kafka突发rebalance异常,如何快速解决?》

参考资料

总结

本文链接:http://www.viiis.cn/news/show_23706.html

本站采用系统自动发货方式,付款后即出现下载入口,如有疑问请咨询在线客服!

售后时间:早10点 - 晚11:30点

咨询售后客服

服务热线 19970861797
服务热线 19970861797服务热线 19970861797
手机二维码
返回顶部
返回顶部返回顶部