kafka参数配置
2020-02-17 本文已影响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