首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多重卡夫卡心跳在再平衡过程中失败的信息

多重卡夫卡心跳在再平衡过程中失败的信息
EN

Stack Overflow用户
提问于 2022-07-04 14:11:06
回答 1查看 232关注 0票数 0

我有一个Kafka应用程序,在该应用程序中,使用者正在轮询消息。每个消息处理大约需要30-40分钟。我调优了以下设置,以使我的使用者实例不会因消息处理时间过长而从组中移除:

代码语言:javascript
复制
max.poll.interval.ms:3600000
max.poll.records = 1

但是,我在日志中仍然得到了很多以下的再平衡信息:

代码语言:javascript
复制
2022-07-04 12:17:54,168 INFO  thread=kafka-coordinator-heartbeat-thread | periodicSync o.a.k.c.c.i.AbstractCoordinator:1054 : [Consumer clientId=consumer-periodicSync-5, groupId=periodicSync] Attempt to heartbeat failed since group is rebalancing
 [Consumer clientId=consumer-periodicSync-5, groupId=periodicSync] Attempt to heartbeat failed since group is rebalancing

我还需要做其他的设置吗?我经常收到这样的消息,我不知道它会如何影响应用程序的工作。

EN

回答 1

Stack Overflow用户

发布于 2022-07-05 03:06:27

在这里,使用者和代理之间的会话超时也起着至关重要的作用。您的使用者可能正在接受默认的session.timeout.ms。请相应调整一下。

session.timeout.ms

消费者在仍然被认为活着的情况下可能与经纪人失去联系的时间默认为3秒。如果超过session.timeout.ms,而消费者没有向组协调器发送心跳,则它被视为已死,并且组协调器将触发使用者组的再平衡,以便将分区从死消费者分配给组中的其他消费者。此属性与heartbeat.interval.ms密切相关。heartbeat.interval.ms控制KafkaConsumer轮询()方法向组协调器发送心跳的频率,而session.timeout.ms则控制消费者不发送心跳的时间。因此,这两个属性通常是模块化的-heatbeat.interval.ms必须低于session.timeout.ms,并且通常设置为超时值的三分之一。所以如果session.timeout.ms是3秒,heartbeat.interval.ms应该是1秒.设置低于默认的session.timeout.ms将使使用者组能够更快地检测失败并从故障中恢复,但也可能会导致不必要的重新平衡,因为使用者需要更长时间才能完成轮询循环或垃圾收集。设置较高的session.timeout.ms将减少意外的再平衡的机会,但也意味着它将需要更长的时间来发现一个真正的失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72858090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档