Kafka参数配置(broker、topic、jvm)
broker中有大概200多个参数,挑选几个重要的记录下来:
1 2 3 4 5 6 7
| log.dirs = /data/kafka1,/data/kafka2,/data/kafka3 #建议每个目录都挂在不同的硬盘上,提高读写性能,也能够支持故障转移
zookeeper.connect = zk1:2181,zk2:2181,zk3:2181/kafka1 #最后添加斜杠组名,使zk支持管理多个kafka集群。
listeners:#PLAINTEXT 表示明文传输、SSL表示使用SSL或TLS加密传输 advertised.listenners:#表明该broker对外发布 #都使用主机名,不建议使用IP,因为Broker源代码中使用的是主机名,IP可能导致不能访问。
|
Topic
1 2 3 4 5
| auto.create.topics.enable:false #是否允许自动创建Topic,建议设置为false,不是设置有可能代码中写错了名称就自动创建错误的Topic。 unclean.leader.election.enable:false #是否允许Unclean Leader选举,不允许数据不完整的副本竞选Leader auto.leader.rebalance.enable:false #是定期选举Leader,没有性能收益。 retention.ms:规定Topic中消息存放的时间,覆盖Broker中的留存时间,默认7天 retention.bytes:规定Topic中消息的大小,覆盖Broker中的存放数据大小,默认-1
|
数据存放
1 2 3
| log.retention.{hour|minutes|ms)#设置Broker数据留存的时间,一般设置hour log.retention.byte#设置Broker存放数据的大小,-1不限制 message.max.bytes#设置允许单条message的大小,默认1M,建议改成5M
|
JVM
1 2 3 4 5 6 7
| 堆大小默认1G,建议手动修改为6G,因为KakfaBroker与客户端交互会在堆上创建大量的bytebuffer KAFKA_HEAP_OPTS:指定堆大小 垃圾回收器,Java8设置为G1回收。 KAFKA_JVM_PERFORMANCE_OPTS:指定垃圾回收器 $> export KAFKA_HEAP_OPTS=--Xms6g --Xmx6g $> export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true $> bin/kafka-server-start.sh config/server.properties
|
操作系统
文件描述符限制
文件系统类型
这里的文件系统类型指的是如ext3,ext4或XFS日志型文件系统,生产环境最好使用XFS类型。
Swappiness
按照尽量少使用交换区的原则设置
vm.swappiness=1
提交时间
kafka向页缓存(Page cache)写入数据即视为写成功来,并不是等落盘才算成功。页缓存会定时刷到文件中,间隔默认5秒可以适当增加这个间隔。kafka软件层做了多副本冗余,不用太担心宕机丢失数据。