Потребитель Kafka использует 100% процессора

У меня есть потребитель кафки, который отлично работает уже несколько дней. Вчера брокер упал. С тех пор потребитель показывает 100% загрузку процессора. Использование значительно снизилось (менее 10%), когда брокер был на подъеме. Мне любопытно, почему использование составляет 100% (или почти 100%), когда брокер не работает? Я ничего не вижу в журналах.

  • Брокер/сервер Kafka: 0.8.2.1
  • Кафка API высокого уровня: 0.8.2.0

person Aravind Yarram    schedule 01.10.2015    source источник
comment
Мое предположение заключается в том, что он пытается где-то восстановить соединение и не отказывается от неудачных попыток. Я думаю, вы могли бы покопаться в коде сбоя выборки потребителя, чтобы выяснить проблему.   -  person serejja    schedule 02.10.2015
comment
где я могу получить код отказа? Из метрик JMX?   -  person Aravind Yarram    schedule 02.10.2015
comment
Нет-нет, я имел в виду фактический исходный код потребителя, а не метрики. Я хотел сказать, что вы можете просмотреть путь потребительского кода, который запускается после неудачной выборки, и посмотреть, не слишком ли часто повторяется какой-либо блок кода или что-то в этом роде. Возможно, где-то там сидит ошибка. Но опять же, это только мое предположение.   -  person serejja    schedule 02.10.2015
comment
это выглядит как исправление ошибки int 0.9.0 ссылки   -  person HbnKing    schedule 18.12.2018


Ответы (2)


Я решил проблему, обновив kafka с:

    <dependency>
        <groupId>org.apache.kafka</groupId>            
        <artifactId>kafka_2.11</artifactId>
        <version>0.11.0.1</version>
    </dependency>

to

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.12</artifactId>
        <version>2.0.1</version>
    </dependency>
person Stepan Yakovenko    schedule 17.12.2018

Увеличение загрузки ЦП как для потребителя kafka, так и для брокера обычно происходит из-за очень высокой частоты запросов опроса от потребителя. В основном это происходит из-за неэффективной конфигурации для потребителя.

Проверить наличие двух свойств:

  1. fetch.min.bytes -> Минимальное количество байтов для завершения опроса
  2. fetch.max.wait.ms -> Максимальное время ожидания у брокера для завершения опроса

Если данные в теме создаются не так часто, сохраняйте достаточно высокое значение fetch.max.wait.ms и ненулевое значение fetch.min.bytes, чтобы избежать частых запросы опроса к брокеру

person Jai Gupta    schedule 06.05.2020