Блокировка сердцебиения кафки - PullRequest
0 голосов
/ 06 ноября 2018

у нас есть сервер WebSocket, который создает отдельную группу потребителей для каждого клиента WebSocket, чтобы каждый пользователь WebSocket мог получать обновления по теме Kafka независимо друг от друга. Мы используем верблюжий API для создания потребителя Kafka (групп), который в любом случае использует нативные Java API-интерфейсы Kafka, так что это не имеет ничего общего с Camel, но упоминает о верблюде просто как к сведению.

благодаря использованию мониторинга JMX и JMC мы обнаружили, что контрольные потоки Kafka блокируются и число подсчетов для заблокированных потоков увеличивается экспоненциально для каждой новой группы потребителей, которая создается при каждом присоединении нового клиента WebSocket. приложив скриншот для более подробной информации. интересно, почему Kafka-потребитель / сердцебиение вызывает такой большой конфликт потоков, влияющий на общее поведение приложения, заканчивающееся исчерпанием сока.

enter image description here

1 Ответ

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

Эта проблема звучит так, как будто это может быть связано с Apache Camel. В прошлом я говорил, что Camel ведет себя очень странно, когда общался с Кафкой (в моем случае потребители Camel совершали одно и то же смещение сотни раз в секунду для каждого потребителя, полностью подавляя массивный кластер из 12 узлов kafka). с коммитами в __offsets тему). Простое обновление до последней версии Camel устранило эту проблему. Убедитесь, что вы используете последнюю доступную версию Camel.

Еще один способ проверки - быстро запустить такое же количество потребителей кафки из командной строки без запуска Camel и посмотреть, ведут ли себя сердцебиения таким образом. Если они этого не сделают, то я почти уверен, что это ошибка верблюда / конфигурации Camel.

...