一、测试环境
二、测试工具
Kafka系统提供了测试工具kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh,在kafka安装的bin目录下,通过该工具可以对生产者性能和消费者性能进行测试,获取一组最佳的参数值,进而提升生产者的发送效率和消费者的读取效率。
三、生产者测试
创建一个拥有3个分区、1个副本的topic,设置不同的线程数发送相同的数量,查看性能变化。脚本如下:
./kafka-producer-perf-test.sh --topic test_producer_perf --num-records
1000000 --throughput -1 --record-size 200 --producer-props
bootstrap.servers=hadoop-master:9092,hadoop-slave01:9092,hadoop-slave02:9092
acks=0
3.1 acks数
acks数分别设置为0、1、-1
测试结果:
结论:在不保证数据丢失的情况下,acks=0的吞吐量是最高的,平均延时的时间也是最短的
保证数据不丢失的情况是acks=1的吞吐率是最高的,平均延时相对来说比较短
3.2 消息长度数
消息长度分别设置为100、200、500、1000
测试结果:
结论:随着消息长度的增加,吞吐量逐渐减少,平均吞吐速率逐渐增大
四、消费者测试
创建一个拥有3个分区、1个副本的topic,设置不同的线程数发送相同的数量,查看性能变化。脚本如下:
./kafka-consumer-perf-test.sh --topic test_producer_perf --threads 1 --messages 5000000 --broker-list hadoop-master:9092,hadoop-slave01:9092,hadoop-slave02:9092
4.1 线程数
线程数分别为1、5、10、20
测试结果
结论:可以看出线程数对吞吐量并没有多大的影响
4.2 批量拉取数
分别设置batch-size大小为100、200、500、1000、2000
测试结果:
结论:超过fetch-size的阈值以后,对吞吐量的性能并没有提高