У меня есть установка Kafka с одним узлом на виртуальной машине с 56 ГБ ОЗУ и диском 750 ГБ с одним брокером.
Вот как выглядит файл server.properties:
broker.id=1
listeners=PLAINTEXT://hostname:port
num.network.threads=15
num.io.threads=30
socket.send.buffer.bytes=1024000
socket.receive.buffer.bytes=1024000
socket.request.max.bytes=1048576000
log.dirs=/path/to/log/
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=2160
log.retention.bytes=500000000000
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=zkhostname:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
message.max.bytes=10485760
У меня есть несколько потребителей и производителей, работающих над различными темами, с соответствием 1: 1 между разделами темы и потребителями (на самом деле у меня в основном 1 раздел и один потребитель). Средний размер каждого моего сообщения 500kb.
Скажем, пропускная способность, которую я получаю для каждого потребителя (который после некоторой обработки создает другую тему), составляет около 200 записей в секунду.
Для конкретной темы у меня есть 10 разделов и 10 потребителей, которые надеются, что обработка будет в 10 раз быстрее (параллельное потребление и отправка).
Пропускная способность была разделена между каждым из потребителей, вероятно, около 20 записей в секунду на каждого потребителя. Единственная причина, по которой я мог подумать, что это может произойти, заключается в том, что ресурсы Kafka достигли некоторых пределов?
На виртуальной машине, если я сделаю free -m
, результат будет примерно таким:
total used free shared buff/cache available
Mem: 56339 12055 35087 24 9196 43428
Swap: 0 0 0
Я читал, что Кафка часто использует pagecache
под капотом, поэтому я не понимаю, правильно ли это.
Я пытался установить это
export KAFKA_HEAP_OPTS="-Xmx16G -Xms16G"
в kafka-server-start.sh
, но, похоже, не помогает.
Если это проблема с памятью или какая-то другая проблема с исчерпанием ресурсов, как мне диагностировать с помощью Kafka? Я пропустил некоторые конфигурации уровня брокера? Мне нужно понять, почему или как снижается производительность моего сервера Kafka.