我正在使用kafka消费群管理来处理我的信息。
我的邮件的处理时间各不相同。因此,我已经设置了最大轮询间隔为20分钟的最大记录,我使用了5个分区和5个消费者实例的默认配置值,除了上述两个。
但是,我还是间歇性地收到了以下错误:
[Consumer clientId=consumer-3, groupId=amc_dashboard_analytics] Attempt to heartbeat failed since group is rebalancing我们的理解是,除非在达到使用者配置文档中所写的最大轮询间隔之前不调用轮询,否则不会发生再平衡。但对我来说,再平衡只在20分钟前发生。
此外,在运行了几个小时之后,所有分配的消费者都会离开,说“尝试心跳失败,因为组正在重新平衡”,并且不再返回(理想情况下,应该再次加入)。
我是不是漏掉了什么?任何线索都会有帮助。
发布于 2020-03-19 09:11:35
再平衡的另一个原因是没有发送心跳的session.timeout.ms到期。您可以考虑增加这个使用者配置。
卡夫卡博士:
heartbeat.interval.ms:,当使用Kafka的组管理设施时,心跳之间的预期时间到消费者协调器。心跳用于确保使用者的会话保持活跃,并在新的使用者加入或离开组时促进再平衡。该值必须设置为低于session.timeout.ms,但通常不应高于该值的1/3。它可以进行更低的调整,以控制正常再平衡的预期时间。(违约日期: 3000)
session.timeout.ms:用于在使用Kafka的组管理工具时检测客户端故障的超时。客户端向代理发送周期性心跳以表示其活性。如果代理在此会话超时到期前未接收到心跳,则代理将从组中删除该客户端并启动重新平衡。注意,该值必须在由group.min.session.timeout.ms和group.max.session.timeout.ms在代理配置中配置的允许范围内。(违约日期: 10000)
您可以查看此链接以获得更多信息。
即使心跳通过单独的线程以固定的时间间隔发送,在某些情况下,无法将心跳发送到session.timeout.ms中的代理。造成这种情况的一些可能原因是:
https://stackoverflow.com/questions/60753274
复制相似问题