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
  • 测试结果
Threads MB/S nMsg/S
1 81.7960 20939.7772
3 172.1875 44080.0053
5 219.7115 56246.1331
7 252.8478 64729.0440
10 258.6749 66607801
15 283.6163 72605.0969
20 257.4644 65910.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-size MB/S nMsg/S
1000 294.6779 214776.6323
5000 282.9386 72432.2758
10000 251.3108 32167.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-size MB/S nMsg/S
1024 209.7428 214776.6323
4096 282.9386 72432.2758
8192 251.3108 32167.7872
10240 233.6218 23922.8727
20480 220.0903 11268.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
  • 测试结果
ack MB/S nMsg/S
不响应 285.8999 73190.3681
leader响应 276.9408 70896.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-codec MB/S nMsg/S
非压缩 274.5853 70293.8282
Gzip 267.6981 68530.7018
Snappy 827.5953 211864.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
  • 测试结果
Threads MB/S nMsg/S
1 61.9631 64973.0362
3 70.4807 73904.3677
6 72.2006 75707.8686
10 73.1439 76696.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-Size MB/S nMsg/S
2000 13.2777 13922.7289
5000 46.4211 48676.0125
10000 75.8128 79495.4688
15000 92.6737 97175.4341
3. cosumer配置总结

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

你可能感兴趣的:(Kafka性能测试)