change kafka configuration max.poll.interval.ms会导致一个使用者卡在(重新)加入组中

t5zmwmid  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(421)

我使用的是kafka版本0.10.2.0,我在云上有两个vm,每个vm都有一个kafka消费者。这两个消费者属于同一个消费群体。在我更新kafka消费者配置之前,它工作得很好 max.poll.interval.msInteger.MAX_VALUE . 当我重新启动vm时,vm首先启动,工作正常。稍后启动的vm将始终停留在(重新)加入组
有人知道这是什么原因吗?
我之所以做此更改,是因为我在版本0.10.2.1中看到了 max.poll.interval.ms 已从更改 300000Integer.MAX_VALUE .

vuktfyat

vuktfyat1#

问题似乎不是由“max.poll.interval.ms”引起的
基于Kafka文献(https://kafka.apache.org/documentation/)

The way consumption is implemented in Kafka is by dividing up the partitions in 
the log over the consumer instances so that each instance is the exclusive 
consumer of a "fair share" of partitions at any point in time. This process of 
maintaining membership in the group is handled by the Kafka protocol 
dynamically. If new instances join the group they will take over some 
partitions from other members of the group; if an instance dies, its partitions 
will be distributed to the remaining instances.

我会检查是否有足够的分区分配到这些消费者。
另外,我建议您在kafka日志中激活调试模式。通常,它会显示很多关于连接过程内部的信息。

zaq34kh6

zaq34kh62#

这是对版本0.10.1.0的更改:
新的java使用者现在支持后台线程的心跳。有一个新配置max.poll.interval.ms,它控制在使用者主动离开组之前轮询调用之间的最长时间(默认为5分钟)。configuration request.timeout.ms的值必须始终大于max.poll.interval.ms,因为这是使用者重新平衡时joingroup请求可以在服务器上阻止的最长时间,因此我们将其默认值更改为略高于5分钟。
这也适用于你的版本
顺便说一句,在版本0.10.2.0中,kafka consumer的max.poll.interval.ms没有更改,但kafka streams consumer的max.poll.interval.ms没有更改:
内部kafka streams consumer max.poll.interval.ms默认值已从300000更改为integer.max\u值

相关问题