← Все статьи

Kafka: тестовый продюсер и консюмер, нагрузочный тест, лидеры, группы

Автор: Юрий Нефёдов, системный инженер · 02.09.2021 · обновлено 24.10.2026

Команды для проверки и обслуживания кластера Apache Kafka. Скрипты лежат в каталоге bin установки Kafka. Вместо server1, server2, server3 укажите адреса своих брокеров.

Тестовый продюсер: сообщения с ключом

Отправляет в топик сообщения, которые вы вводите в консоли. Ключ и значение разделяются двоеточием: строка user1:hello уйдёт с ключом user1 и значением hello:

sh kafka-console-producer.sh --topic test --property "parse.key=true" --property "key.separator=:" --bootstrap-server server1:9092,server2:9092,server3:9092

Тестовый потребитель

Читает сообщения из топика и выводит вместе с ключами:

sh kafka-console-consumer.sh --topic topic_name --property print.key=true --property print.value=true --property key.separator=":" --bootstrap-server server1:9092,server2:9092,server3:9092

Чтобы прочитать топик с самого начала, добавьте --from-beginning.

Нагрузочный тест продюсера

Показывает, сколько сообщений в секунду кластер принимает и с какой задержкой. --record-size — размер сообщения в байтах, --throughput — ограничение скорости (сообщений в секунду), acks=1 — ждать подтверждения только от лидера. Число сообщений в примере очень большое, тест можно прервать по Ctrl+C:

sh kafka-producer-perf-test.sh --topic test --num-records 10000000000 --record-size 250 --throughput 1000000 --producer-props acks=1 buffer.memory=67108864 compression.type=none batch.size=8196 linger.ms=0 retries=0 bootstrap.servers=server1:9092,server2:9092,server3:9092

Тест создаёт реальную нагрузку, на рабочем кластере запускайте его осторожно.

Перевыбор лидеров

После перезапуска брокеров лидерство в партициях может скопиться на одном из них. Вернуть лидеров на предпочтительные брокеры (Kafka 2.4 и новее):

sh kafka-leader-election.sh --bootstrap-server server1:9092 --election-type preferred --all-topic-partitions

В старых версиях для этого служит скрипт kafka-preferred-replica-election.sh.

Группы потребителей и топики

Список групп потребителей и подробности по группе: на какие топики подписана, позиция чтения и отставание (LAG):

sh kafka-consumer-groups.sh --list --bootstrap-server server1:9092,server2:9092,server3:9092
sh kafka-consumer-groups.sh --bootstrap-server server1:9092,server2:9092,server3:9092 --describe --group GroupName

Список топиков и подробности по топику: партиции, лидеры, реплики:

sh kafka-topics.sh --bootstrap-server server1:9092 --list
sh kafka-topics.sh --bootstrap-server server1:9092 --describe --topic topic_name

Нужна помощь с настройкой?

Если задача сложнее, чем в статье, напишите мне. Первая консультация бесплатная.