美文网首页kafka
kafka参数配置

kafka参数配置

作者: 带马界的神秘人 | 来源:发表于2020-02-17 18:00 被阅读0次

    配置存储信息

    配置日志落在哪些磁盘

    • log.dirs 支持配置多个,用逗号分隔
    • log.dir 补充log.dirs 只能配置一个,一般不需要配置

    zookeeper相关配置

    配置使用哪个zookeeper

    • zookeeper.connect 支持配置多个,例如 zk1:2181,zk2:2181。
      可以让多个kafka集群使用一个zookeeper集群,在zookeeper.connect配置后面加上chroot
      例如
    zookeeper.connect=zk1:2181,zk2:2181/kafka1
    

    注意,只需要在最后面追加一个/chroot即可

    链接相关的配置

    • listeners 监听器,其实就是告诉broker使用什么协议对外提供服务
    • advertised.listeners 这组监听器是broker对外发布的

    具体配置格式协议名称,主机名称, 端口号 写法 protocol://hostname:port

    • protocol
      • PLAINTEXT 明文传输
      • SSL 使用tls加密传输
      • 也可以是自定义的协议名称, 一旦使用自定义名称需要配置listener.security.protocol.map参数来告诉broker使用了那种安全协议。例如
    # 表示CONTROLLER使用明文不加密传输数据
    listener.security.protocol.map=CONTROLLER:PLAINTEXT
    
    • hostname
      如果不指定,则使用java.net.InetAddress.getCanonicalHostName()获取,一般是系统的hostname

    topic管理相关参数

    • auto.create.topics.enable 是否允许自动创建topic
      最好设置成false,
    • unclean.leader.election.enable 是否允许 Unclean Leader选举
      最好设置成false,防止出现数据落后的副本选举称Leader导致数据丢失问题
    • auto.leader.rebalance.enable 是否允许定期进行Leader选举
      最好设置成false, 防止出现定期选举影响吞吐量

    这个是broker的全局配置,也可以在创建topic的时候 指定每个topic的配置,默认topic的配置覆盖broker的配置。

    数据留存方面

    • log.retention.{hour|minutes|ms} 控制一条消息的最大保存时间,优先级ms>minutes>hour
    • log.retention.bytes 指定broker的消息保存总磁盘容量大小,-1 表示不限制
    • message.max.bytes 控制broker接收的每条消息最大的大小,默认不到1m大小,可以适当的设计大点

    JVM相关配置

    kafka使用的scale编写的,最终是通过jvm运行,所以需要设置jvm参数对kafka调优。kafka启动的时候会读取两个环境变量

    • KAFKA_HEAP_OPTS: 指定堆大小 推荐6GB -Xms6g -Xmx6g
    • KAFKA_JVM_PREFORMANCE_OPTS: 指定GC参数
      -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcureent -Djava.awt.headless=true

    操作系统参数

    kafka并不需要设置太多的OS参数,通常需要关注下面几个:

    • 文件描述符限制
      文件描述符系统资源并不像我们相信那样昂贵,通常设置成一个超大的值是合理的做法,太小会经常看到Too many open files的错误。建议 ulimit -n 1000000

    相关文章

      网友评论

        本文标题:kafka参数配置

        本文链接:https://www.haomeiwen.com/subject/mubbfhtx.html