Изменение конфигурации Kafka max.poll.interval.ms приводит к тому, что один потребитель застрял в (Re) присоединяющейся группе - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Kafka версии 0.10.2.0, и у меня есть две виртуальные машины в облаке, у каждой есть один потребитель Kafka.Эти два потребителя принадлежат к одной и той же группе потребителей.Он работает нормально, пока я не обновлю конфигурацию потребителя Kafka max.poll.interval.ms до Integer.MAX_VALUE.Когда я перезагружаю виртуальные машины, сначала запускается виртуальная машина.Виртуальная машина, запущенная позже, всегда будет застревать в (Повторном) присоединении к группе

Кто-нибудь имеет представление о причинах этого?

Я внес это изменение, потому что видел в версии 0.10.2.1, по умолчаниюполе max.poll.interval.ms изменено с 300000 на Integer.MAX_VALUE.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Это было изменение для версии 0.10.1.0:

Новый потребитель Java теперь поддерживает сердцебиение из фонового потока.Существует новая конфигурация max.poll.interval.ms, которая контролирует максимальное время между вызовами опроса до того, как потребитель проактивно покинет группу (5 минут по умолчанию). Значение параметра request.timeout.ms всегда должно быть больше, чем max.poll.interval.ms , потому что это максимальное время, которое запрос JoinGroup может блокировать на сервере, пока потребитель перебалансируется, поэтомумы изменили его значение по умолчанию чуть выше 5 минут.

, что относится и к вашей версии

Кстати, в версии 0.10.2.0 они не изменили max.poll.interval.мс для потребителя kafka, но для потребителя kafka streams customer:

Внутреннее значение по умолчанию для потребителя Kafka Streams max.poll.interval.ms было изменено с 300000 на Integer.MAX_VALUE

0 голосов
/ 28 ноября 2018

Не похоже, что проблема может быть вызвана '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.

Iпроверим, достаточно ли разделов для распределения по этим потребителям.

Кроме того, я бы рекомендовал вам включить режим DEBUG в журналах Kafka. Обычно он показывает много информации о внутренностяхпроцесс присоединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...