kafka-flink性能测试规划(中)

4.2 consumer测试

4.2.1 thread

  • 测试脚本
./kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_perf1 --fetch-size 1048576  --messages 100000  --threads 1 --hide-header --num-fetch-threads 1
 ./kafka-consumer-perf-test.sh --zookeeper  110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_perf1 --fetch-size 1048576  --messages 100000  --threads 4 --hide-header  --num-fetch-threads 1
 ./kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_perf1 --fetch-size 1048576  --messages 100000  --threads 7 --hide-header  --num-fetch-threads 1
 ./kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_perf1 --fetch-size 1048576  --messages 100000  --threads 10 --hide-header  --num-fetch-threads 1
  • 测试结果
Threadsfetch-sizepartitionreplicationfetch-threadsMB/SMsgNum/s
11048576111116.76178222
41048576111158.10241312
71048576111150.20229252
101048576111143.58219154
  • 测试结论

   在threads为4时,消费速度最好达到24.1w/s,而后续慢慢平稳。

4.2.2 fetch-size

  • 测试脚本
./bin/kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic s1 --messages 1000000 --fetch-size  1000  --threads 3 --hide-header
./bin/kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka--topic s1 --messages 1000000 --fetch-size  2000  --threads 3 --hide-header 
./bin/kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic s1 --messages 1000000 --fetch-size  5000  --threads 3  --hide-header
./bin/kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic s1 --messages 1000000 --fetch-size  10000  --threads 3 --hide-header
./bin/kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic s1 --messages 1000000 --fetch-size  15000  --threads 3 --hide-header
./bin/kafka-consumer-perf-test.sh --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic s1 --messages 1000000 --fetch-size  20000  --threads 3 --hide-header
  • 测试结果
Threadsfetch-sizepartitionreplicationfetch-threadsMB/SMsgNum/s
1524288111114.86175318
11048576111116.59177955
12097152111118.88181451
13145728111118.87181432
14194304111121.37185253
15242880111113.46173178
  • 测试结论

   抓取的大小在我们处理687byte的消息时,在419.4w时,性能达到最优121.37m/s;而后续在随着抓取大小的变大而产生性能损耗。

4.2.3 partition

  • 测试脚本
1、创建topic
/bin/kafka-topics.sh --create --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka  --topic test_kafka_part3  --partitions 3 --replication-factor 1 
/bin/kafka-topics.sh --create --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka  --topic test_kafka_part5  --partitions 5 --replication-factor 1
/bin/kafka-topics.sh --create --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_part7  --partitions 7 --replication-factor 1
/bin/kafka-topics.sh --create --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_part7  --partitions 9 --replication-factor 1
2、生成数据
/bin/kafka-producer-perf-test.sh  --topic test_kafka_perf1 --num-records 10000000 --record-size 687  --producer-props   bootstrap.servers=10.240.1.134:9092,10.240.1.143:9092,10.240.1.146:9092  batch.size=1000000 acks=1  compression.type=lz4 --throughput 500000
3、消费数据
./kafka-consumer-perf-test.sh --broker-list localhost:9092 --zookeeper 110.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka  --topic test_kafka_part --messages 10000000 --fetch-size  10240  --threads 5 --hide-header   --num-fetch-threads 1
4、初步结论
分区数越多,单线程消费者吞吐率越小。随着更多的broker线程和磁盘开始扫描不同的分区,吞吐量开始显著增加。但是,一旦使用了所有broker线程和磁盘,添加额外的分区没有任何效果。
  • 测试结果
Threadsfetch-sizepartitionreplicationfetch-threadsMB/SMsgNum/s
14194304111129.3558197437
14194304311203.19310144
14194304511214.46327342
14194304711121.37185253
14194304911121.37185253
  • 测试结论

   分区数在kafka中和处理的线程数有一定的关系,当thread小于partition数时,那么可能存在一个thread消费两个partition,而==两者一样或者说thread大于partition时,实际是一一对应关系==。

4.2.4 replication

  • 测试脚本
1、创建topic

/bin/kafka-topics.sh--create --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_rep2 --partitions 5 --replication-factor 2
/bin/kafka-topics.sh--create --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_rep3 --partitions 5 --replication-factor 3
/bin/kafka-topics.sh--create --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_rep4 --partitions 5 --replication-factor 4
/bin/kafka-topics.sh--create --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_rep5 --partitions 5 --replication-factor 5
2、生成数据
/bin/kafka-producer-perf-test.sh --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topics test_kafka_rep --messages 10000000  --message-size 4096 --batch-size 10000  --threads 1 --compression-codec 3  --hide-header
3、消费数据
./bin/kafka-consumer-perf-test.sh  --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_kafka_rep --messages 10000000 --fetch-size  1048576  --threads 5
--num-fetch-threads 1
4、初步结论
备份数越多,吞吐率越低。
  • 测试结果
Threadsfetch-sizepartitionreplicationfetch-threadsMB/SMsgNum/s
14194304111129.36197437
14194304121103.11157372
1419430413167.4102869
  • 测试结论

   数量过少会影响数据的可用性,太多则会白白浪费存储资源,一般建议在2~4为宜,我们设置为3个,既能保障数据的高可用,又避免了浪费过多的存储资源。

4.2.5 fetch-threads

  • 测试脚本:
./kafka-consumer-perf-test.sh --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_perf --fetch-size 1048576 --messages 1000000 --threads 5 --num-fetch-threads 1
./kafka-consumer-perf-test.sh --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_perf --fetch-size 1048576 --messages 10000000 --threads 5 --num-fetch-threads 3
./kafka-consumer-perf-test.sh --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_perf --fetch-size 1048576 --messages 50000000 --threads 5 --num-fetch-threads 5
./kafka-consumer-perf-test.sh --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_perf --fetch-size 1048576 --messages 100000000 --threads 5  --num-fetch-threads 7
./kafka-consumer-perf-test.sh --zookeeper 10.240.0.9:2181,10.240.0.10:2181,10.240.0.13:2181/kafka --topic test_perf --fetch-size 1048576 --messages 100000000 --threads 5  --num-fetch-threads 10
  • 测试结果

Threads|fetch-size|partition|replication|fetch-threads|MB/S|MsgNum/s
--|--|--|--|--|--|--|--
1|4194304| 1 | 1 | 1 | 117.86 | 179881
1|4194304| 1 | 1 | 3 | 137.56 | 209973
1|4194304| 1 | 1 | 6 | 127.63| 194810
1|4194304| 1 | 1 | 7 | 126.73 | 193434
1|4194304| 1 | 1 | 10 | 146.40 | 223458

  • 测试结论

   在我们控制其他条件不变的情况下,我们更改fetch-thread的线程数,可以发现是随着线程数增多而消费速度加快,在fetch-threads=10时,最优为146.4m/s。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值