kafka参数:max.poll.interval.ms 和 session.timeout.ms

工作中,经常会给kafka配置以下参数:

request.timeout.ms  60 * 1000 * 4
max.poll.interval.ms 60 * 1000 * 6
session.timeout.ms 60 * 1000 * 3
heartbeat.interval.ms 60 * 1000 * 2
  • session.timeout.ms: 检查整个消费者死亡超时时间
  • heartbeat.interval.ms: 心跳检查超时时间,但通常应设置为不高于session.timeout.ms的1/3
  • max.poll.interval.ms: 检查消费者处理线程死亡
  • request.timeout.ms: 请求超时时间,和上面三个没有依赖关系

在kafka0.10.1 之前:

  • 检查整个消费者死亡和检查消费则处理线程,使用的同一个线程,如果设置的max.poll.interval.ms大于session.timeout.ms,遇到一个处理时间过长的消息,会由于线程忙于处理消息,而无法发送心跳,导致kafka认为改消费则已完全死亡,进而进行Rebalance
  • 所以推荐设置:heartbeat.inerval.ms < max.poll.interval.ms < session.timeout.ms

在kafka0.10.1之后:

  • session.timeout.ms 和 max.poll.interval.ms 解耦了,拆成了两个线程,不用再担心它们之间的依赖关系
  • 推荐设置:heartbeat.interval.ms < session.timeout.ms

参考:Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容