kafka开发经验之kafka压力测试,机器数量计算及分区数量计算

kafka开发经验之kafka压力测试,机器数量计算及分区数量计算

一:kafka压力测试
用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。
kafka-consumer-perf-test.sh
kafka-producer-perf-test.sh
1)Kafka Producer压力测试
在kafka的安装目录下的bin目录下有如下两个文件。我们来测试一下

bin/kafka-producer-perf-test.sh  --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092

说明:
record-size是一条信息有多大,单位是字节。
num-records是总共发送多少条信息。
throughput 是每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量。
后买的hadoop102,hadoop103,hadoop104为自己的集群的地址

执行后的结果如下
在这里插入图片描述
100000 records sent, 32509.752926 records/sec (3.10 MB/sec), 690.72 ms avg latency, 1129.00 ms max latency, 677 ms 50th, 1107 ms 95th, 1123 ms 99th, 1127 ms 99.9th.
参数解析:本例中一共写入10w条消息,吞吐量为:10.35MB/sec,每次写入的平均延迟为168.96毫秒,最大的延迟为424.00毫秒。后面的时间为一个延迟的走势图,横轴为所有的数据,纵轴为延迟的时间,它从低到高进行了一个排序

2)Kafka Consumer压力测试
Consumer的测试,如果这四个指标(IO,CPU,内存,网络)都不能改变,考虑增加分区数来提升性能。

bin/kafka-consumer-perf-test.sh --broker-list hadoop102:9092,hadoop103:9092,hadoop104:9092 --topic test --fetch-size 10000 --messages 10000000 --threads 1

参数说明:
–zookeeper 指定zookeeper的链接信息
–topic 指定topic的名称
–fetch-size 指定每次fetch的数据的大小
–messages 总共要消费的消息个数

测试结果说明:
start.time, end.time, data.consumed.in.MB, MB/sec, data.consumed.in.nMsg, nMsg/sec
2019-02-19 20:29:07:566, 2019-02-19 20:29:12:170, 9.5368, 2.0714, 100010, 21722.4153
开始测试时间,测试结束数据,共消费数据9.5368MB,吞吐量2.0714MB/s,共消费100010条,平均每秒消费21722.4153条。

二: 项目经验之Kafka机器数量计算
Kafka机器数量(经验公式)=2*(峰值生产速度副本数/100)+1
先拿到峰值生产速度,再根据设定的副本数,就能预估出需要部署Kafka的数量。
比如我们的峰值生产速度是50M/s。副本数为2。
Kafka机器数量=2
(50*2/100)+ 1=3台

三: 项目经验值Kafak分区数计算
说到kafka就一定会想到创建几个分区,几个副本。副本数一般情况下都是连个或三个,但是分区数如何计算呢?
1)创建一个只有1个分区的topic
2)测试这个topic的producer吞吐量和consumer吞吐量。
3)假设他们的值分别是Tp和Tc,单位可以是MB/s。
4)然后假设总的目标吞吐量是Tt,那么分区数=Tt / min(Tp,Tc)
例如:producer吞吐量=20m/s;consumer吞吐量=50m/s,期望吞吐量100m/s;
分区数=100 / 20 =5分区
分区数一般设置为:3-10个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值