kafka参数配置

配置存储信息

配置日志落在哪些磁盘

  • 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参数配置)