Skip to main content

Network Processor Idle Percent падает до 0 на отдельных брокерах (Kafka 3.6.1 KRaft)

Здравствуйте, коллеги.

Мы эксплуатируем кластер Kafka 3.6.1 (KRaft mode) с 9 брокерами и 3
отдельными контроллерами.
Аппаратные ресурсы брокеров: 24 CPU, 48 GB RAM.
Количество соединений: до ~80k одновременных.
------------------------------

*Конфигурация брокеров:*

group.initial.rebalance.delay.ms=0log.retention.check.interval.ms=30000
log.retention.hours=24
log.roll.hours=1
log.segment.bytes=1073741824
num.io.threads=24
num.network.threads=24
num.recovery.threads.per.data.dir=2
offsets.topic.replication.factor=3
socket.receive.buffer.bytes=-1
socket.request.max.bytes=10485760
socket.send.buffer.bytes=-1
transaction.state.log.min.isr=2
transaction.state.log.replication.factor=3zookeeper.connection.timeout.ms=10000
delete.topic.enable=true
replica.fetch.max.bytes=5242880
max.message.bytes=5242880
message.max.bytes=5242880
default.replication.factor=3
min.insync.replicas=2
num.replica.fetchers=2replica.fetch.wait.max.ms=500replica.lag.time.max.ms=30000controller.quorum.election.timeout.ms=2000controller.quorum.request.timeout.ms=4000
socket.listen.backlog.size=500
queued.max.requests=1000

------------------------------

*Проблема:*
Мы видим, что на некоторых брокерах метрика
kafka_network_processor_idle_percent периодически уходит в 0.

При этом:

-

CPU и RAM остаются свободными.
-

Лидеры партиций распределены равномерно.
-

Количество соединений тоже примерно одинаково между брокерами.
-

Общая нагрузка от продюсеров/консьюмеров не превышает нормальную.
-

Но мы заметили, что *в целом по кластеру очень много Metadata-запросов
от клиентов*.

Из-за этого создаётся впечатление, что именно metadata traffic «забивает»
network threads, хотя реальные продюсерские/консьюмерские операции не
нагружают систему.
------------------------------

*Что мы пробовали:*

-

Увеличивали количество потоков:
-

с num.network.threads=16 / num.io.threads=8
-

до 24 / 18
-

и далее 24 / 24.
-

Проверили распределение лидеров и клиентов — оно равномерное.
-

Проверили продюсеров и консьюмеров — нагрузка обычная.

------------------------------

*Вопрос:*
Почему отдельные брокеры «забиваются» по сетевым потокам при большом числе
metadata-запросов, даже при низкой общей нагрузке?
Какие параметры конфигурации или механизмы в Kafka могут помочь
ограничить/оптимизировать metadata-запросы клиентов, чтобы не блокировать
network threads?
Стоит ли смотреть в сторону quotas, лимитов соединений или иных настроек?

Спасибо.

Comments