#apache-kafka #kafka-consumer-api
#апач-кафка #кафка-потребитель-api
Вопрос:
У нас есть 10 брокеров, и в последнее время многие из них получают ошибки «слишком много открытых файлов». Затем брокер умирает. Когда мы проверяем количество файлов, открытых процессом кафки, обычно оно составляет 70 тысяч или более. При проверке (lsof -p {pid}) большинство файлов, открытых кафкой, имеют название «не удается идентифицировать протокол». При перезапуске, когда мы проверяем отставание по темам, оно увеличилось на огромную сумму, скажем, если раньше оно составляло 800 миллионов, то теперь оно становится 10 миллиардами.
Первый вопрос: Почему брокер открывает все эти файлы? В прошлом у нас не было этой проблемы, и мы не обновляли и не изменяли версию кафки.
Второй вопрос: Почему отставание так сильно увеличивается за такой короткий промежуток времени?
Ответ №1:
Для кафки раздел темы сопоставляется с файлом журнала на диске. Таким образом, с увеличением числа разделов/разделов количество файлов, к которым обращается кафка, также увеличится. Вы можете увеличить ограничение на количество открываемых файлов (в Linux оно обычно определяется ulimit).
Ожидается увеличение задержки, поскольку повышение и понижение брокеров может оказать потенциальное влияние на потребителей, поскольку это может привести к перебалансировке между потребителями, что приведет к остановке потребления до завершения перебалансировки (влияние на производителей обычно незначительно при условии репликации). Что касается величины задержки, то это зависит от пропускной способности вашего производителя.
Например, если ваш производитель производит 100 мг/с, а перебалансировка занимает 1 минуту, вы уже накопили отставание в 6000. Необходимо глубоко погрузиться в журналы потребителей, чтобы понять, почему потребитель блокируется и на какой срок. Затем это должно быть сопоставлено с пропускной способностью производителя, чтобы оправдать количество задержек.