kafka压力测试(官方自带)

一:Kafka压测

用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。

一般都是网络IO达到瓶颈

kafka-consumer-perf-test.sh
kafka-producer-perf-test.sh

1、Kafka Producer压力测试

在…/kafka/bin目录下

[duoduo@hadoop100 kafka_2.11-2.4.0]$ bin/kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=hadoop100:9092,hadoop102:9092,hadoop101:9092

说明:
  • record-size:一条信息有多大,单位字节
  • num-records:总共发送多少条信息
  • throughput:每秒多少条信息,设置成-1,表示不限流,可测生产者最大吞吐量
结果:

100000 records sent, 27495.188342 records/sec (2.62 MB/sec), 1461.75 ms avg latency, 2183.00 ms max latency, 1696 ms 50th, 2103 ms 95th, 2177 ms 99th, 2181 ms 99.9th.

解析:
  • 一共写入10万条消息
  • 吞吐量为2.62 MB/sec
  • 每次写入的平均延迟为1461.75ms
  • 最大延迟2183.00 ms

2、Kafka Consumer 压力测试

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

[duoduo@hadoop100 kafka_2.11-2.4.0]$ bin/kafka-consumer-perf-test.sh --broker-list hadoop100:9092 --topic test --fetch-size 10000 -messages 10000000 --threads 1

参数说明:
  • broker-list:节点地址
  • topic:指定topic名称
  • fetch-size:指定每个fetch的数据大小
  • messages:总共要消费的消息个数
结果:

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2020-06-27 13:17:57:490, 2020-06-27 13:18:11:751, 20.0272, 1.4043, 210000, 14725.4751, 1593235077858, -1593235063597, -0.0000, -0.0001

解释:
  • 开始时间
  • 结束时间
  • 共消费数据:20.0272M
  • 吞吐量:1.4043MB/s
  • 共消费数据:210000条
  • 平均每秒消费:14725.4751条

二:项目经验之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个

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值