Как рассчитать, сколько памяти нужно Kafka Broker?

Как рассчитать, сколько памяти требуется Kafka Broker, учитывая пропускную способность, средний размер сообщения и время хранения.

Я спрашиваю, как я вижу в нашей системе мониторинга, что после запуска брокер Kafka линейно увеличивает используемую кучу JVM. В какой-то момент мы получили OutOfMemoryError.

Мы расширяем JVM Heap пару раз, и проблема остается.

Так что было бы лучше не догадываться, что нужно Кафке, экспериментируя, а посчитав значение:-).

1 ответ

Трудно рассчитать точное значение, но вы можете использовать эмпирическое правило из документации Kafka:

Вам нужно достаточно памяти для буферизации активных читателей и писателей. Вы можете выполнить оценку потребностей памяти за пределами конверта, предполагая, что вы хотите иметь возможность буферизовать в течение 30 секунд и вычислить потребность в памяти как write_throughput*30.

Также с 1.0.0 вы можете использовать queued.max.request.bytes ограничить объем памяти, который брокеры могут использовать для входящих запросов. Это может помочь вам избежать OOM, и если вы можете контролировать его использование с:

kafka.network:type=SocketServer,name=MemoryPoolAvailable
kafka.network:type=SocketServer,name=MemoryPoolUsed

Это должно позволить вам определить, сколько памяти требует ваша рабочая нагрузка без особых проблем.

Другие вопросы по тегам