Kafka Consumer group проводит ребалансировку - PullRequest
0 голосов
/ 19 марта 2020

Я использую управление группами потребителей kafka для обработки своих сообщений.

Время обработки моих сообщений отличается друг от друга. Поэтому я установил максимальный интервал опроса 20 минут для максимальных записей 20. И я использую 5 разделов и 5 пользовательских экземпляров со значениями конфигурации по умолчанию, кроме двух выше.

Но все же я получаю периодически появляется следующая ошибка:

[Consumer clientId=consumer-3, groupId=amc_dashboard_analytics] Attempt to heartbeat failed since group is rebalancing

При этом понимается, что перебалансирование не произойдет, если опрос не будет вызван до того, как будет достигнут максимальный интервал опроса, как записано в пользовательских документах конфигурации. Но для меня восстановление баланса происходит раньше, чем через 20 минут.

Кроме того, после нескольких часов работы все назначенные потребители просто оставляют сообщение «Попытка сердцебиения не удалась, поскольку группа восстанавливает баланс» и не присоединяются снова (в идеале следует присоединиться назад).

Я что-то здесь упускаю? Любые выводы будут полезны.

1 Ответ

0 голосов
/ 19 марта 2020

Другая причина перебаланса истекает session.timeout.ms без отправки пульса. Вы можете увеличить эту конфигурацию потребителя.

Из документов Kafka:

heartbeat.interval.ms : ожидаемое время между пульсами для координатора потребителя, когда использование средств управления группой Кафки. Сердцебиения используются для обеспечения того, чтобы сеанс потребителя оставался активным, и для облегчения восстановления баланса, когда новые потребители присоединяются или покидают группу. Значение должно быть установлено ниже, чем session.timeout.ms, но обычно оно должно быть установлено не выше 1/3 от этого значения. Его можно отрегулировать еще ниже, чтобы контролировать ожидаемое время нормальных перебалансировок. (по умолчанию: 3000)


session.timeout.ms : время ожидания, используемое для обнаружения сбоев клиента при использовании средства управления группами Kafka. Клиент периодически посылает биения, чтобы указать его жизнеспособность брокеру. Если посредник не получил тактовые импульсы до истечения этого тайм-аута сеанса, то брокер удалит этого клиента из группы и инициирует перебалансировку. Обратите внимание, что значение должно находиться в допустимом диапазоне, настроенном в конфигурации посредника для group.min.session.timeout.ms и group.max.session.timeout.ms. (по умолчанию: 10000)

Вы можете проверить эту ссылку для получения дополнительной информации.

Даже если сердцебиение отправляется через фиксированные промежутки времени через отдельный поток, в некоторых Пульс случаев не может быть отправлен брокеру в session.timeout.ms. Вот некоторые из возможных причин этой ситуации:

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