• kafka项目经验之如何进行Kafka压力测试、如何计算Kafka分区数、如何确定Kaftka集群机器数量


    @

    Kafka压测

    用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈==(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。 ==
    使用下面两个kafka自带的脚本

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

    Kafka Producer(生产)压力测试

    进入kafka的安装目录,执行下面的命令

    [sun@hadoop102 kafka]$ 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,表示不限流,可测出生产者最大吞吐量。

    输出:
    在这里插入图片描述

    参数解析:本例中一共写入10w条消息,吞吐量为1.45 MB/sec,每次写入的平均延迟为1718.17毫秒,最大的延迟为3564.00毫秒。

    Kafka Consumer(消费)压力测试

    Consumer的测试,如果这四个指标(IO,CPU,内存,网络)都不能改变,考虑增加分区数来提升性能。
    进入kafka的安装目录,执行下面的命令

    [sun@hadoop102 kafka]$ 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 开始时间:2021-01-27 13:55:20:963
    • end.time 结束时间:2021-01-27 13:55:36:555
    • data.consumed.in.MB 共消费数据:22.1497MB
    • MB.sec 吞吐量:1.4206MB/sec
    • data.consumed.in.nMsg 共消费消息条数:232256条
    • nMsg.sec 平均每秒消费条数:14895.8440条

    计算Kafka分区数

    • 创建一个只有1个分区的topic
    • 测试这个topic的producer吞吐量(1.45m/s)和consumer吞吐量(1.42m/s)。数据来自上面的压测
    • 假设他们的值分别是Tp和Tc,单位可以是MB/s。 4)然后假设你期望的目标吞吐量是Tt(10m/s),那么分区数=Tt /min(Tp,Tc) ,这里取最小值是因为使最低的吞吐量都能达到期望的吞吐量。
    • 例如:producer吞吐量=20m/s;consumer吞吐量=50m/s,期望吞吐量100m/s;
    • 分区数=100 / 20 =5分区 5)分区数一般设置为:3-10个

    Kafka机器数量计算

    • Kafka机器数量(经验公式)=2 (峰值生产速度副本数/100)+1
    • 先拿到峰值生产速度,再根据设定的副本数,就能预估出需要部署Kafka的数量。 副本数默认是1个
    • 在企业里面2-3个都有,2个居多。
    • 比如我们的峰值生产速度是50M/s(一般不超过50M/s)。生产环境可以设置为2。 Kafka机器数量=2(502/100)+1=3台
    • 副本多可以提高可靠性,但是会降低网络传输效率。
    如果真的不知道做什么 那就做好眼前的事情吧 你所希望的事情都会慢慢实现...
  • 相关阅读:
    编译openwrt时报错build_dir/hostpkg/libubox-2018-07-25-c83a84af/blobmsg_json.c:21:19: fatal error: json.h: No such file or directory
    git add时遇到类似fatal: Path 'XXX' is in submodule 'XXX'错误提示如何解决?
    select下拉框多选取值
    JavaScript substr() 方法
    select2多选设置select多选,select2取值和赋值
    bootstrap select 多选的用法,取值和赋值(取消默认选择第一个的对勾)
    Bootstrap select 多选并获取选中的值
    Bootstrap select多选下拉框实现代码
    Bootstrap selectpicker 下拉框多选获取选中value和多选获取文本值
    Mysql中EXISTS关键字用法、总结
  • 原文地址:https://www.cnblogs.com/sunbr/p/14334718.html
Copyright © 2020-2023  润新知