团队心跳衰竭的确切原因是什么,因为它正在重新平衡?在群体中所有的消费者都站起来的情况下,重新平衡的原因是什么?谢谢您。
frebpwbc1#
心跳是检查所有消费者是否仍在运行的基本机制。如果由于组正在重新平衡而导致心跳失败,则表明您的使用者示例发送下一个心跳所用的时间太长,被认为已死亡,因此触发了重新平衡。如果要防止这种情况发生,可以增加超时时间( session.timeout.ms ),或者确保您的消费者更频繁地发送心跳信号( heartbeat.interval.ms ). 心跳基本上是嵌入 poll() 因此,您需要确保足够频繁地调用poll。这通常可以通过限制单个轮询返回的记录数来实现 max.poll.records (以缩短处理获取的所有数据所需的时间)。更新自从kafka0.10.1以来,心跳是在后台线程中发送的,而不是在 poll() 称为(参见。https://cwiki.apache.org/confluence/display/kafka/kip-62%3a+allow+consumer+to+send+heartbeats+from+a+background+thread). 在这种新的设计中,配置 session.timeout.ms 以及 heartbeat.interval.ms 都是一样的。此外,还有 max.poll.interval.ms 这就决定了 poll() 必须呼叫。有关更多详细信息,请参阅session.timeout.ms和max.poll.interval.ms之间的差异(对于kafka 0.10.0.0及更高版本)
session.timeout.ms
heartbeat.interval.ms
poll()
max.poll.records
max.poll.interval.ms
1条答案
按热度按时间frebpwbc1#
心跳是检查所有消费者是否仍在运行的基本机制。如果由于组正在重新平衡而导致心跳失败,则表明您的使用者示例发送下一个心跳所用的时间太长,被认为已死亡,因此触发了重新平衡。
如果要防止这种情况发生,可以增加超时时间(
session.timeout.ms
),或者确保您的消费者更频繁地发送心跳信号(heartbeat.interval.ms
). 心跳基本上是嵌入poll()
因此,您需要确保足够频繁地调用poll。这通常可以通过限制单个轮询返回的记录数来实现max.poll.records
(以缩短处理获取的所有数据所需的时间)。更新
自从kafka0.10.1以来,心跳是在后台线程中发送的,而不是在
poll()
称为(参见。https://cwiki.apache.org/confluence/display/kafka/kip-62%3a+allow+consumer+to+send+heartbeats+from+a+background+thread). 在这种新的设计中,配置session.timeout.ms
以及heartbeat.interval.ms
都是一样的。此外,还有max.poll.interval.ms
这就决定了poll()
必须呼叫。有关更多详细信息,请参阅session.timeout.ms和max.poll.interval.ms之间的差异(对于kafka 0.10.0.0及更高版本)