• Kafka入门到精通-阶段三(调优简介)


    Kafka 硬件配置选择

    场景说明

    100 万日活,每人每天 100 条日志,每天总共的日志条数是 100 * 100 = 1 亿条。
    1 亿 /24 小时 /60 /60 = 1150 / 每秒钟。
    每条日志大小: 0.5k - 2k (取 1k )。
    1150 / 每秒钟 * 1k 1m/s
    高峰期每秒钟: 1150 * 20 = 23000 条。
    每秒多少数据量: 20MB/s

    服务器台数选择

    服务器台数 = 2 * (生产者峰值生产速率 * 副本 / 100 + 1
    = 2 * 20m/s * 2 / 100 + 1
    = 3
    建议 3 台服务器。

    磁盘选择

    kafka 底层主要是 顺序写 ,固态硬盘和机械硬盘的顺序写速度差不多。
    建议选择普通的机械硬盘。
    每天总数据量: 1 亿条 * 1k 100g
    100g * 副本 2 * 保存时间 3 / 0.7 1T
    建议三台服务器硬盘总大小,大于等于 1T

    内存选择

    Kafka 内存组成:堆内存 + 页缓存(系统内存)
    Kafka 堆内存建议每个节点: 10g ~ 15g
    查看 Kafka 进程号
    jps

    查看gc

    jstat -gc 9726 1s 10

    参数说明:
    S0C :第一个幸存区的大小; S1C :第二个幸存区的大小
    S0U :第一个幸存区的使用大小; S1U :第二个幸存区的使用大小
    EC :伊甸园区的大小; EU :伊甸园区的使用大小
    OC :老年代大小; OU :老年代使用大小
    MC :方法区大小; MU :方法区使用大小
    CCSC: 压缩类空间大小; CCSU: 压缩类空间使用大小
    YGC :年轻代垃圾回收次数; YGCT :年轻代垃圾回收消耗时间
    FGC :老年代垃圾回收次数; FGCT :老年代垃圾回收消耗时间
    GCT :垃圾回收消耗总时间;

    查看堆内存

     jmap -heap 9726
    页缓存:页缓存是 Linux 系统服务器的内存。我们只需要保证 1 segment 1g )中
    25% 的数据在内存中就好。
    每个节点页缓存大小 = (分区数 * 1g * 25% / 节点数。例如 10 个分区,页缓存大小
    = 10 * 1g * 25% / 3 1g
    建议服务器内存大于等于 11G

    CPU 选择

    num.io.threads = 8 负责写磁盘的线程数,整个参数值要占总核数的 50%
    num.replica.fetchers = 1 副本拉取线程数,这个参数占总核数的 50% 1/3
    num.network.threads = 3 数据传输线程数,这个参数占总核数的 50% 2/3
    建议 32 cpu core

    网络选择

    网络带宽 = 峰值吞吐量 ≈ 20MB/s 选择千兆网卡即可。
    100Mbps 单位是 bit 10M/s 单位是 byte ; 1byte = 8bit 100Mbps/8 = 12.5M/s
    一般百兆的网卡(100Mbps )、千兆的网卡( 1000 Mbps )、万兆的网卡( 10000 Mbps )。

    压力测试

    生产者

    bin/kafka-producer-perf-test.sh --topic first --record-size 1024 --num-records 1000000 --throughput 10000 --producer-props bootstrap.servers=hadoop102:9092 batch.size=16384 linger.ms=0
    record-size 是一条信息有多大,单位是字节,本次测试设置为 1k
    num-records 是总共发送多少条信息,本次测试设置为 100 万条。
    throughput 是每秒多少条信息,设成 -1 ,表示不限流,尽可能快的生产数据,可测出生产者最大吞吐量。本次实验设置为每秒钟 1 万条。
    producer-props 后面可以配置生产者相关参数, batch.size 配置为 16k

    消费者

    bin/kafka-consumer-perf-test.sh --bootstrap-server hadoop102:9092 - -topic first --messages 1000 --consumer.config config/consumer.properties
    --bootstrap-server 指定 Kafka 集群地址
    --topic 指定 topic 的名称
    --messages 总共要消费的消息个数。本次实验 100 万条。
  • 相关阅读:
    [环境配置][原创]matconv在windows上GPU编译成功的环境
    超好用的PC端录屏软件推荐
    [github-100天机器学习]day4+5+6 Logistic regression
    Java调用Azure证书错误javax.net.ssl.SSLHandshakeException
    Yolov5 export.py实现onnx模型的导出
    使用 Jetpack Compose 实现一个计算器APP
    基于微信公众平台API的菜谱小程序 的设计与实现
    dayjs格式转换成日期
    Elasticsearch Mapping类型修改
    前端怎么从H5调起微信扫描二维码?小程序使用扫码功能.
  • 原文地址:https://blog.csdn.net/S1124654/article/details/125614682