bin/kafka-producer-perf-test.sh --messages 500000 --message-size 512 --batch-size 1 --topic test-pati1-rep1 --threads 1 --broker-list 203.150.54.215:21204,203.150.54.216:21204,203.150.54.217:21204
b)批处理为5,线程数为4,复制因子为2
bin/kafka-producer-perf-test.sh --messages 50000 --message-size 512 --batch-size 5 --topic test-pati1-rep2 --threads 1 --broker-list 203.150.54.215:21204,203.150.54.216:21204,203.150.54.217:21204
c)批处理为10,线程数为4,复制因子为2,不压缩,sync
bin/kafka-producer-perf-test.sh --messages 50000 --message-size 512 --batch-size 10 --topic test-pati2-rep2 --threads 4 --compression-codec 0 --sync 1 --broker-list 203.150.54.215:21204,203.150.54.216:21204,203.150.54.217:21204
d)批处理为10,线程数为4,复制因子为2,gzip压缩,sync
bin/kafka-producer-perf-test.sh --messages 50000 --message-size 512 --batch-size 10 --topic test-pati2-rep2 --threads 4 --compression-codec 1 --sync 1 --broker-list 203.150.54.215:21204, 203.150.54.216:21204, 203.150.54.217:21204
说明:消息大小统一使用和业务场景中日志大小相近的512Bype,消息数为50w或200w条。
三、测试消费者吞吐率
测试consumer吞吐率
调整批处理数,线程数,partition数,复制因子,压缩等进行测试。
示例:
a)批处理为1,线程数为1,复制因子为1
bin/kafka-consumer-perf-test.sh --messages 500000 --message-size 512 --batch-size 1 --topic test-pati1-rep1 --threads 1 --zookeeper 203.150.54.215:2181b)批处理为5,线程数为4,复制因子为2
bin/kafka-consumer-perf-test.sh --messages 50000 --message-size 512 --batch-size 5 --topic test-pati1-rep2 --threads 1 --zookeeper 203.150.54.215:2181
c)批处理为10,线程数为4,复制因子为2,不压缩,sync
bin/kafka-consumer-perf-test.sh --messages 50000 --message-size 512 --batch-size 10 --topic test-pati2-rep2 --threads 4 --compression-codec 0 --sync 1 --zookeeper 203.150.54.215:2181
d)批处理为10,线程数为4,复制因子为2,gzip压缩,sync
bin/kafka-consumer-perf-test.sh --messages 50000 --message-size 512 --batch-size 10 --topic test-pati2-rep2 --threads 4 --compression-codec 1 --sync 1 --zookeeper 203.150.54.215:2181
注:以上测试均使用python脚本多线程测试实现。
测试结果及分析
1、 生产者测试结果及分析
调整线程数,批处理数,复制因子等参考,对producer吞吐率进行测试。在测试时消息大小为512Byte,消息数为50w,结果如下:
复制因子
1
2
线程数
批处理
1
1
1.8598
0.5878
4
5
17.6594
7.2501
4
10
26.4221
13.0208
压/no
4
10
4.6855
1.9058
4
10
3.0945
1.4846
Producer吞吐率(MB/s)
调整sync模式,压缩方式得到吞吐率数据如表3.在本次测试中msg=512Byte,message=500000,batch_zie=10
结果分析:
1)kafka在批处理,多线程,不适用同步复制的情况下,吞吐率是比较高的,可以达26MB/s,消息数达17w条/s以上。
2)使用批处理或多线程对提升生产者吞吐率效果明显。
3)复制因子会对吞吐率产生较明显影响
使用同步复制时,复制因子会对吞吐率产生较明显的影响。复制因子为2比因子为1(即无复制)时,吞吐率下降40%左右。
4)使用sync方式,性能有明显下降。
使用Sync方式producer吞吐率会有明显下降
5)压缩与吞吐率
使用Gzip及Snappy方式压缩,吞吐率反而有下降,原因待分析。而Snappy方式吞吐率高于gzip方式。
6)分区数与吞吐率
分区数增加生产者吞吐率反而有所下降
2、消费者结果及分析
结果分析: