Kafka配置参数
所属分类 kafka
浏览量 1087
Broker参数
存储
log.dir 单个路径
log.dirs 多个路径,推荐使用
/home/kafka1,/home/kafka2,/home/kafka3
建议把不同的路径挂载到不同的物理磁盘上
1.1引入 故障转移 Failover , 磁盘损坏自动迁移到正常磁盘上
Zookeeper
分布式协调 协调管理并保存Kafka集群元数据
Broker topic 分区 分区leader ISR 等信息
zookeeper.connect
zk1:2181,zk2:2181,zk3:2181
可配置 zkroot ,配置一个即可
zk1:2181,zk2:2181,zk3:2181/kafka
连接
listeners
逗号分隔的三元组 协议名称,主机名,端口号
协议名称
PLAINTEXT 明文传输
SSL 使用SSL或者TLS加密传输
主机名推荐使用域名
advertised.listeners
对外发布的监听器
host.name/port 过期参数
Topic
auto.create.topics.enable
是否允许自动创建Topic,建议设置为false
unclean.leader.election.enable
是否允许Unclean Leader选举,建议设置为false
分区有多个副本,只有一个副本对外提供服务,即Leader副本
只有保存数据比较多的副本才有资格竞选Leader
false 不允许落后太多的副本竞选Leader,后果就是这个分区不可用,因为没有Leader
true 允许从落后太多的副本中选举出一个Leader,后果就是数据有可能丢失
auto.leader.rebalance.enable
是否允许定期进行Leader选举,建议设置为false
换Leader的代价很高
数据留存
log.retention.{hours|minutes|ms}
数据保留时间 推荐使用hours ,默认7天
log.retention.bytes
默认值为-1,表示不限制
message.max.bytes
Broker能够接收的最大消息大小 默认1M
Topic级别参数
Topic级别参数会覆盖全局Broker参数
retention.ms、retention.bytes、message.max.bytes
创建Topic ,保存最近半年数据,单个消息最大2MB
$ kafka-topics --bootstrap-server localhost:9092 --create --topic transaction --partitions 1 --replication-factor 1 --config retention.hours=4320 --config max.message.bytes=2048000
修改Topic级别参数,将消息的最大大小修改为3MB
$ kafka-configs --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=3072000
JVM参数
Kafka2.0.0开始,不支持 Java7
堆大小设置为6GB
Broker与客户端交互时,会在JVM堆上创建大量的ByteBuffer实例
垃圾收集器
Java7
如果Broker所在机器CPU资源非常充裕,建议使用CMS收集器,-XX:+UseCurrentMarkSweepGC
否则使用吞吐量优先收集器,-XX:+UseParallelGC
Java8
使用G1收集器,在没有任何调优的情况下,G1的表现要优于CMS
主要体现在更少的FullGC,更少的参数调整
-Xms6g -Xmx6g
-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
OS参数
文件描述符限制
ulimit -n
文件系统类型
日志型文件系统:ext3、ext4、XFS ,XFS性能强于ext4,推荐XFS
Swappiness
设置一个很小的值 譬如 1
设置为0,当物理内存耗尽时,操作系统会触发OOM Killer
OOM Killer会随机挑选一个进程然后kill掉
Flush
向Kafka发送数据,写入到操作系统的页缓存(Page Cache)即可
操作系统定期将页缓存上的脏数据落盘到物理磁盘上
Flush落盘时间默认5秒,如果页缓存中的数据在写入磁盘前宕机,会丢失数据
在软件层面已经提供了多副本的冗余机制,可适当调大Flush落盘时间
java8 jvm 参数
CMS JVM参数介绍
jvm相关知识点
CMS和G1的区别
jvm参数查看
JVM GC 过程简介
上一篇
下一篇
Zookeeper四字命令
降级 限流 熔断 简单理解
kafka在zookeeper中的元数据
kafka集群搭建
kafka命令行发送接收消息
zookeeper命令行zkCli使用