Kafka性能测试

配置

集群配置

  • 3个Node 3个节点;
  • cpu: 40c
  • memory: 256G
  • 带宽: 4G

JVM配置

-Xmx30G -Xms30G -XX:MaxPermSize=48m -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35

关键因素测试

Producer测试

1 和线程数的关系(threads)
  • 测试脚本
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 1 
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 3 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 5 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 7 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 15  --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 20 --hide-header
  • 测试结果
ThreadsMB/SnMsg/S
181.796020939.7772
3172.187544080.0053
5219.711556246.1331
7252.847864729.0440
10258.674966607801
15283.616372605.0969
20257.464465910.8885
2 和批大小的关系(batch-size)
  • 测试脚本
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 1000  --threads 10 
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 5000  --threads 10 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --hide-header
  • 测试结果
Batch-sizeMB/SnMsg/S
1000294.6779214776.6323
5000282.938672432.2758
10000251.310832167.7872
3 和日志大小的关系(message-size)
  • 测试脚本
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 1024 --batch-size 10000  --threads 10 
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 8192 --batch-size 10000  --threads 10 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 10240 --batch-size 10000  --threads 10 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 20480 --batch-size 10000  --threads 10 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 40960 --batch-size 10000  --threads 10 --hide-header
  • 测试结果
Message-sizeMB/SnMsg/S
1024209.7428214776.6323
4096282.938672432.2758
8192251.310832167.7872
10240233.621823922.8727
20480220.090311268.6214
4 和响应方式的关系(acks)
  • 测试脚本
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --request-num-acks 0
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --request-num-acks 1 --hide-header
  • 测试结果
ackMB/SnMsg/S
不响应285.899973190.3681
leader响应276.940870896.8451
5 和压缩方式的关系(compression-codec)
  • 测试脚本
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --compression-codec 0 
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --compression-codec 1 --hide-header
./bin/kafka-producer-perf-test2.sh --broker-list cmjx-slave232:9092 --topics s1 --messages 1000000  --message-size 4096 --batch-size 10000  --threads 10 --compression-codec 2 --hide-header
  • 测试结果
compresson-codecMB/SnMsg/S
非压缩274.585370293.8282
Gzip267.698168530.7018
Snappy827.5953211864.4068
6 Producer配置总结

在特定资源情况下, 在日志大小为4kb, 批大小为5000, 使用15个线程,使用Snapy压缩方式,用不确认的响应方式的情况下,性能最好;

Cosumer测试

1. 和线程数的关系(threads)
  • 测试脚本
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  10000  --threads 1
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  10000  --threads 3 --hide-header
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  10000  --threads 6 --hide-header
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  10000  --threads 10 --hide-header
  • 测试结果
ThreadsMB/SnMsg/S
161.963164973.0362
370.480773904.3677
672.200675707.8686
1073.143976696.9193
2. 和抓取数据量的关系(fetch-size)
  • 测试脚本
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  1000  --threads 10
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  2000  --threads 6 --hide-header 
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  5000  --threads 6  --hide-header
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  10000  --threads 6 --hide-header
./bin/kafka-consumer-perf-test.sh --broker-list cmjx-slave232:9092 --zookeeper cmjx-slave236:2181 --topic s1 --messages 1000000 --fetch-size  15000  --threads 6 --hide-header
  • 测试结果
Fetch-SizeMB/SnMsg/S
200013.277713922.7289
500046.421148676.0125
1000075.812879495.4688
1500092.673797175.4341
3. cosumer配置总结

使用6-8个线程, 抓取大小为10000左右,性能相对好;

    原文作者:Wilson_0e83
    原文地址: https://www.jianshu.com/p/04395191c61b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞