Kafka在Linux下的性能测试可通过官方脚本和工具完成,核心测试维度包括吞吐量、延迟、资源利用率等,具体方法如下:
使用Kafka自带脚本:
生产者压测:kafka-producer-perf-test.sh
测试消息发送能力,支持设置消息大小、数量、吞吐量限制等参数,例如:
./kafka-producer-perf-test.sh --topic test --num-records 1000000 --record-size 1024 --throughput -1 --producer-props bootstrap.servers=localhost:9092
(-1
表示不限流,输出吞吐量、延迟等指标)。
消费者压测:kafka-consumer-perf-test.sh
测试消息消费能力,支持多线程并行消费,例如:
./kafka-consumer-perf-test.sh --broker-list localhost:9092 --topic test --messages 1000000 --threads 4 --fetch-size 1048576
(threads
为消费线程数,fetch-size
为单次拉取数据量)。
吞吐量测试
batch.size
(批次大小)、linger.ms
(发送间隔)等参数,测试不同配置下的最大吞吐量。./kafka-producer-perf-test.sh --topic high-throughput --num-records 5000000 --record-size 1024 --throughput -1 --batch.size 32768 --acks=1
延迟测试
// 生产者发送带时间戳的消息
producer.send(new ProducerRecord<>("latency-topic", System.currentTimeMillis(), "key", "value"));
// 消费者计算延迟
long latency = System.currentTimeMillis() - record.timestamp();
资源利用率测试
top
、iostat
、netstat
等工具监控CPU、内存、磁盘I/O和网络带宽使用情况,识别性能瓶颈。稳定性测试
分区与副本影响测试
通过创建不同分区数(如1/3/6分区)的Topic,测试分区数对吞吐量的影响,需注意副本数(replication.factor
)对性能的负面影响。
压缩算法对比
测试不同压缩方式(none
/gzip
/snappy
/lz4
)对吞吐量和延迟的影响,例如:
./kafka-producer-perf-test.sh --topic compress-test --compression.type lz4 --num-records 1000000
参考来源: