Один из наших потребителей StreamThread из приложения Kafka Streams перешел в состояние зомба ie после создания следующего сообщения журнала:
[Consumer clientId = messages-processor-db9aa8a3-6c3b-453b-b8c8- 106bf2fa257d-StreamThread-1-потребитель, groupId = процессор уведомлений] Участник-процессор уведомлений-db9aa8a3-6c3b-453b-b8c8-106bf2fa257d-StreamThread-1-потребитель-b2b9eac3-c374-43e2-bbc3-d9163 отправитель запроса отправитель-запросчик группы 53 ***: 9092 (id: 2147483646 rack: null) из-за истечения времени ожидания опроса потребителей. Это означает, что время между последующими вызовами poll () было больше, чем настроенный max.poll.interval.ms, что обычно означает, что опрос l oop тратит слишком много времени на обработку сообщений. Вы можете решить эту проблему, увеличив max.poll.interval.ms или уменьшив максимальный размер пакетов, возвращаемых в poll () с max.poll.records.
Похоже, что у потребителя Kafka StreamThread есть покинул группу потребителей, но приложение Kafka Streams оставалось в состоянии RUNNING, не потребляя новых записей.
Я хотел бы обнаружить, что приложение Kafka Streams перешло в такое состояние зомба ie, чтобы оно могло быть закрыты и заменены новым экземпляром. Обычно мы делаем это с помощью проверки работоспособности Kubernetes, которая проверяет, находится ли приложение Kafka Streams в состоянии RUNNING или REPARTITIONING, но в данном случае это не работает.
Поэтому у меня два вопроса:
- Следует ли ожидать, что приложение Kafka Streams останется в состоянии РАБОТА, когда у него нет активных потребителей? Если да: почему?
- Как мы можем определить (программно / с помощью метрик), что приложение Kafka Streams перешло в такое состояние зомба ie, когда у него нет активного потребителя?