kafka性能测试

1.环境准备

    1)云机环境(三台云机环境一致)
kafka性能测试

kafka性能测试
    2)kafka配置(
version:0.9.0
kafka性能测试

2.测试方式

    1)生产者测试
    使用kafka自带工具%KAFKA_HOME%/bin/kafka-producer-perf-test.sh,可用参数可参考./bin/kafka-producer-perf-test.sh --help

    在使用的过程中对不同的topic(拥有不同的分区数和复制数),设置不同的参数来进行测试

    2)消费者测试
    使用kafka自带工具%KAFKA_HOME%/bin/kafka-consumer-perf-test.sh,可用参数可参考./bin/kafka-consumer-perf-test.sh --help
    
    在使用过程中对不同的topic(拥有不同的分区数和复制数),设置不同的参数来进行测试

3.数据准备

    设置不同的topic,拥又不同的partitions 和 replication-factor数
    笔者创建八个topic用于测试,分别是:

kafka性能测试

    1)生产者
    设置 --num-records 500000 --throughput 1000000 --producer-props bootstrap.servers=10.187.96.50:9092,10.187.96.51:9092,10.187.96.52:9092(用户需设置自己的kafka集群地址及端口号) 

    2)消费者
    设置 --messages 500000 --message-size 1024 --zookeeper 10.187.96.50:2181,10.187.96.51:2181,10.187.96.52:2181(用户需设置自己的zookeeper集群地址及端口号) 


4.生产者测试及结果分析

    1)不同record-size(单条消息体大小)下的测试

kafka性能测试

    图表展示如下(X轴:单消息体大小[1024,512,256,128,64,32],Y轴:记录数/秒)

kafka性能测试

    结论:消息体越小,每秒生产的记录数越多

    2)不同partition(topic分区数)下的测试

kafka性能测试   
 
   图表展示如下(X轴:分区数[1,2,3,4,6],Y轴:记录数/秒)

kafka性能测试

    结论:随着分区数的增大,每秒生产数也相应增大,在partitions=3的时候达到最大,然后继续增加分区数,每秒生产数开始减少

    3)不同replication-num(复制数)下的测试

kafka性能测试

    图表展示如下(X轴:分片复制数[1,2,3],Y轴:记录数/秒)

kafka性能测试

    结论:分片复制数越多,每秒生产记录数越少(一般设置与broker数相同即可)

    4)其他影响生产记录数的因素
    broker和producer的配置可影响生产记录数,参考参数如下:
kafka性能测试kafka性能测试

5.消费者测试及结果分析

    1)不同record-size(单条消息体大小)下的测试

kafka性能测试

    图表展示如下(X轴:单条消息体大小[1024,512,256,64],Y轴:记录数/秒)

kafka性能测试

    结论:单条消息体大小对每秒消费数据影响不大(都在38万/秒附近浮动)
    
    2)不同thread-num(消费线程数)下的测试

kafka性能测试

    图表展示如下(X轴:消费线程数[1,2,3,4],Y轴:记录数/秒)

kafka性能测试

    结论:消费线程数越大,每秒消费数越多;当消费线程数大于分区数时,多余的线程无法消费到数据

    3)不同partitions(分区数)下的测试

kafka性能测试

    图表展示如下(X轴:分区数[1,2,3,4,5,6],Y轴:记录数/秒)

kafka性能测试

    结论:在一定范围内,分区数越大,每秒消费数越高;
         PRESSURE_TEST_PART_3_REP_3最低?TODO
         分区数持续增大,每秒记录数开始降低,降低原因可参考 http://blog.csdn.net/kwengelie/article/details/51150114  

    4)其他影响消费者性能的参数

kafka性能测试