Kafka Performance Tools

Performance tuning involves two important metrics:

  • Latency measures how long it takes to process one event.
  • Throughput measures how many events arrive within a specific amount of time.

Run help:

kafka-cli kafka-producer-perf-test --help
kafka-cli kafka-consumer-perf-test --help

Create a topic:

kafka-cli kafka-topics --create --bootstrap-server kafka1:9092 \
                       --replication-factor 3 \
                       --partitions 3 \
                       --topic kafka-cluster.performance-test

Performance Tests

Test producer:

kafka-cli kafka-producer-perf-test --topic kafka-cluster.performance-test \
                                   --throughput -1 \
                                   --num-records 3000000 \
                                   --record-size 1024 \
                                   --producer-props acks=all bootstrap.servers=kafka1:9092,kafka2:9092,kafka3:9092
  • Throughput in MB/sec.
  • Latency in milliseconds.

Test consumer:

kafka-cli kafka-consumer-perf-test --topic kafka-cluster.performance-test \
                                   --broker-list kafka1:9092,kafka2:9092,kafka3:9092 \
                                   --messages 3000000
  • start.time, end.time: shows test start and end time.
  • data.consumed.in.MB: shows the size of all messages consumed.
  • MB.sec: shows how much data transferred in megabytes per second (Throughput on size).
  • data.consumed.in.nMsg: shows the count of the total messages consumed during this test.
  • nMsg.sec: shows how many messages were consumed in a second (Throughput on the count of messages).

Test end to end latency:

kafka-cli kafka-run-class kafka.tools.EndToEndLatency kafka1:9092,kafka2:9092,kafka3:9092 kafka-cluster.performance-test 10000 1 1024
  • This class records the average end to end latency for a single message to travel through Kafka.
  • Latency in milliseconds.