#performance #apache-kafka #monitoring #cpu-usage
#Производительность #апачи-кафка #мониторинг #загрузка процессора
Вопрос:
У нас есть 3 узла кластера kafka с примерно 32 разделами и более 400 разделами, распределенными по этим серверам. У нас нагрузка равномерно распределена между этим разделом, однако мы наблюдаем, что 2 брокерских сервера работают с процессором> 60%, в то время как третий работает всего на 10%. Как мы можем гарантировать, что все серверы работают бесперебойно? Нужно ли повторно использовать раздел (kafka-переназначение-разделение cmd).
PS: разделы равномерно распределены по всем серверам брокера.
Комментарии:
1. Все ли три сервера функционируют как брокеры? или один из них — хранитель зоопарка. Вы видели, что сообщения потребляются / создаются одинаково для всех узлов?
2. Какие службы запущены на каждом сервере?
3. на всех запущены только службы zookeper и kafka.
4.PFA общее количество сообщений, полученных для каждого сервера брокера, а также загрузка процессора для сервера для этого day.ibb.co/bR4HF3m ibb.co/yPPKVtr
5. Я предлагаю использовать монтирование JMX как на ZK, так и на Kafka
Ответ №1:
В некоторых случаях это является результатом того, как отдельные группы потребителей определяют, какой раздел использовать в __consumer_offsets
разделе.
На высоком уровне каждая группа потребителей обновляет только один раздел в этом разделе. Это часто приводит к __consumer_offsets
теме с очень неравномерным распределением скорости сообщений.
Может быть так, что: У вас есть пара очень больших групп потребителей, что означает, что им необходимо __consumer_offsets
часто обновлять тему. Одна из этих групп использует раздел, лидером которого является 2-й брокер. В другом используется раздел, лидером которого является 3-й брокер. Это приведет к тому, что для обновления этого раздела будет использоваться значительное количество процессора, и это произойдет только на 2-м и 3-м брокерах (как видно на вашем скриншоте).
Подробное сообщение в блоге можно найти здесь