一、压力测试
1. 生产者压力测试
(1) 命令格式
# bootstrap.servers=host1:port1,hoast2:port2,... 用来指定要连接的kafkaServer
$KAFKA_HOME/bin/kafka-producer-perf-test.sh --topic topic_name --record-size num1 --num-records num2 --throughput -1 --producer-props bootstrap.servers=host1:port1,hoast2:port2,...
(2) 选项解释
选项 | 解释 |
topic | 指定进行压力测试的主题 |
record-size | 生产每条记录的大小,单位为byte |
num-records | 一共生产多少条记录 |
2. 消费者压力测试
(1) 命令格式
bin/kafka-consumer-perf-test.sh --broker-list host1:port1,host2:port2,... --topic topic_name --fetch-size num1 --messages num2 --threads num3
(2) 选项解释
选项 | 解释 |
broker-list | 指定要连接的kafkaServer,每个连接地址使用逗号(,)分割 |
topic | 指定进行压力测试的主题 |
fetch-size | 指定一次请求消费的数据大小,默认为 1048576 即 1 MB |
messages | 一共消费多少条消息 |
threads | 指定开启几个线程扮演同组消费者的角色消费数据,需要注意的是,如果想要测试多个消费者同时消费的能力,必须保证分区数要多于开启的消费者数,原因在于:当只有一个消费者组时,主题中的一个分区能且只能同时被一个消费者组中的一个消费者消费 |
二、机器数计算
1. 计算公式
Kafka机器数量 = 2*(峰值生产速度 * 副本数 / 100)+1
2. 参数解释
参数 | 解释 |
峰值产生速度 | 生产者产生数据的最快速度,单位为MB/s |
副本数 | 创建主题时指定的副本数 |
三、分区数计算
1. 计算公式
分区数=Tt / min(Tp,Tc)
2. 参数解释
参数 | 解释 |
Tt | 期望吞吐量,由自己设置,即想让Kafka的吞吐量达到一个什么样的速度,单位为MB/s |
Tp | 一个生产者向一个主题中的一个分区生产数据的平均速度,使用压力测试进行计算,单位为MB/s |
Tc | 一个消费者从一个主题中的一个分区消费数据的平均速度,使用压力测试进行计算单位为MB/s |