• 关于Kafka部署优化的一点建议


    网络和IO线程配置优化

    配置参数

    • num.network.threads:Broker处理消息的最大线程数
    • num.io.threads:Broker处理磁盘IO的线程数

    优化建议

    • 一般num.network.threads主要处理网络io,读写缓冲区数据,基本没有io等待,配置线程数量为cpu核数加1
    • num.io.threads主要进行磁盘io操作,高峰期可能有些io等待,因此配置需要大些。配置线程数量为cpu核数2倍,最大不超过3倍.

    日志保留策略配置

    当kafka server的被写入海量消息后,会生成很多数据文件,且占用大量磁盘空间,如果不及时清理,可能磁盘空间不够用,kafka默认是保留7天。

    优化建议

    • 减少日志保留时间,建议三天或则更多时间。log.retention.hours=72
    • 段文件配置1GB,有利于快速回收磁盘空间,重启kafka加载也会加快(如果文件过小,则文件数量比较多,kafka启动时是单线程扫描目录(log.dir)下所有数据文件),文件较多时性能会稍微降低。log.segment.bytes=1073741824

    log数据文件刷盘策略

    为了大幅度提高producer写入吞吐量,需要定期批量写文件

    优化建议

    • 每当producer写入10000条消息时,刷数据到磁盘。log.flush.interval.messages=10000
    • 每间隔1秒钟时间,刷数据到磁盘。log.flush.interval.ms=1000

    replica复制配置

    每个follow从leader拉取消息进行同步数据,follow同步性能由这几个参数决定:

    • num.replica.fetchers:拉取线程数
    • replica.fetch.min.bytes:拉取最小字节数
    • replica.fetch.min.bytes:拉取最大字节数
    • replica.fetch.wait.max.ms:最大等待时间

    优化建议

    • num.replica.fetchers 配置多可以提高follower的I/O并发度,单位时间内leader持有更多请求,相应负载会增大,需要根据机器硬件资源做权衡
    • replica.fetch.min.bytes=1 默认配置为1字节,否则读取消息不及时
    • replica.fetch.max.bytes= 5 * 1024 * 1024 默认为1MB,这个值太小,5MB为宜,根据业务情况调整
    • replica.fetch.wait.max.ms follow拉取频率,频率过高,会导致cpu飙升,因为leader无数据同步,leader会积压大量无效请求情况

    配置jmx服务

    kafka server中默认是不启动jmx端口的,需要用户自己配置,修改方式是修改kafka-run-class.sh文件,在文件的最前面添加一行JMX_PORT=8868

  • 相关阅读:
    kubeadm High availability cluster(1.23)
    OpenSSH升级版本到最新(8.9)
    如何修复 Linux 中的“passwd:鉴定令牌操作错误”
    dd命令
    Docker 更新版本
    iftop命令命令详解
    云原生时代的DevOps之道
    yum获取rpm软件包的三种方法
    Kubernetes使用helm部署单机版mysql(使用hostPath数据卷)
    The connection to the server localhost:8080 was refused did you specify the right host or port?
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8143268.html
Copyright © 2020-2023  润新知