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
參考來源: