1.概述
在分布式实时数据流场景下,随着数据量的增长,对Kafka集群的性能和稳定性的要求也很高。本篇博客将从生产者和消费者两方面来做性能测试,针对具体的业务和数据量,来调优Kafka集群。
2.内容
2.1 测试环境
本次测试的环境信息由三台物理机组成,具体信息如下所示:
2.2 测试工具
Kafka系统提供了测试工具kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh,通过该工具可以对生产者性能和消费者性能进行测试,获取一组最佳的参数值,进而提升生产者的发送效率和消费者的读取效率。这里如果需要实现带有线程参数功能的工具,可以修改工具源代码,新建一个kafka-producer-perf-test-0.8.sh脚本,实现内容如下:
# 使用老版本的ProducerPerformance工具类 exec $(dirname $0)/kafka-run-class.sh kafka.tools.ProducerPerformance "$@"
2.2.1 生产者测试参数

2.2.2 消费者测试参数

3.生产者测试
生产者测试,分别从线程数、分区数、副本数、Broker数、同步与异步模式、批处理大小、消息长度大小、数据压缩等维度来进行。
3.1 线程数
创建一个拥有6个分区、1个副本的Topic,设置不同的线程数并发送相同的数据量,查看性能变化。测试脚本如下:
# 创建主题 [hadoop@dn1 ~]$ kafka-topics.sh --create --zookeeper dn1:2181, dn2:2181, dn3:2181 --topic test_producer_perf --partitions 6 --replication-factor 1 # 设置1个线程数 [hadoop@dn1 ~]$ kafka-producer-perf-test-0.8.sh --messages 5000000 --topics test_producer_perf --threads 1 --broker-list dn1:9092, dn2:9092, dn3:9092 # 设置10个线程数 [hadoop@dn1 ~]$ kafka-producer-perf-test-0.8.sh --messages 5000000 --topics test_producer_perf --threads 10 --broker-list dn1:9092, dn2:9092, dn3:9092 # 设置20个线程数 [hadoop@dn1 ~]$ kafka-producer-perf-test-0.8.sh --messages 5000000 --topics test_producer_perf --threads 20 --broker-list dn1:9092, dn2:9092, dn3:9092 # 设置25个线程数 [hadoop@dn1 ~]$ kafka-producer-perf-test-0.8.sh --messages 5000000 --topics test_producer_perf --threads 25 --broker-list dn1:9092, dn2:9092, dn3:9092 # 设置30个线程数 [hadoop@dn1 ~]$ kafka-producer-perf-test-0.8.sh --messages 5000000 --topics test_producer_perf --threads 30 --broker-list dn1:9092, dn2:9092, dn3:9092
3.1.1 测试结果



