Kafka
压测
用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。
kafka-consumer-perf-test.sh
kafka-producer-perf-test.sh
1)Kafka Producer压力测试
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,表示不限流,可测出生产者最大吞吐量。
100000 records sent, 16914.749662 records/sec (1.61 MB/sec), 1244.19 ms avg latency, 2118.00 ms max latency, 1292 ms 50th, 2081 ms 95th, 2110 ms 99th, 2117 ms 99.9th.
# 本例中一共写入10w条消息,吞吐量为1.61 MB/sec,每次写入的平均延迟为1244.19毫秒,最大的延迟为2118毫秒。 百分之50的延迟在1292以上,百分之95的在2081......
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
# --fetch-size 指定每次fetch的数据的大小
# --messages 总共要消费的消息个数
start.time | end.time | data.consumed.in.MB | MB.sec | data.consumed.in.nMsg | nMsg.sec |
---|---|---|---|---|---|
2021-05-22 14:35:45:753 | 2021-05-22 14:35:48:719 | 9.5367 | 3.2154 | 100000 | 33715.4417 |
Kafka机器数量计算
Kafka机器数量(经验公式)=2(峰值生产速度副本数/100)+1
先拿到峰值生产速度,再根据设定的副本数,就能预估出需要部署Kafka的数量。
比如我们的峰值生产速度是50M/s。副本数为2。
Kafka机器数量=2(502/100)+ 1=3台
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分区
https://blog.csdn.net/weixin_42641909/article/details/89294698
分区数一般设置为:3-10个