组的心跳失败,因为它正在重新平衡

use*_*715 7 apache-kafka kafka-producer-api

由于重新平衡导致组心跳失败的确切原因是什么?组中所有消费者都起来的重新平衡的原因是什么?

谢谢。

Mat*_*Sax 12

心跳是检查所有使用者是否仍在运行的基本机制。如果由于组正在重新平衡而导致心跳失败,则表明您的消费者实例花费了太长时间来发送下一个心跳,并且被认为已死,因此触发了重新平衡。

如果您想防止这种情况的发生,可以增加超时时间(session.timeout.ms),或确保使用者发送心跳的频率更高(heartbeat.interval.ms)。心跳基本上嵌入在中poll(),因此,您需要确保足够频繁地调用poll。通常可以通过限制单个轮询通过返回的记录数来实现max.poll.records(以缩短处理获取的所有数据所需的时间)。

更新资料

从Kafka 0.10.1开始,心跳在后台线程中发送,而不是在poll()调用时发出(参见https://cwiki.apache.org/confluence/display/KAFKA/KIP-62%3A+Allow+consumer+to+ send + heartbeats + from + a + background + thread)。在这种新设计中,配置session.timeout.msheartbeat.interval.ms仍然相同。另外,max.poll.interval.ms它确定poll()必须多久调用一次。

有关更多详细信息,请参见。Kafka 0.10.0.0和更高版本的session.timeout.ms和max.poll.interval.ms之间的差异