2.1 Broker 端參數(shù)
- log.dirs:日志文件目錄啊片,多個(gè)路徑,用逗號(hào)分隔厂镇,比如/home/kafka1,/home/kafka2,/home/kafka3``苍糠。
- log.dir:日志文件目錄,單個(gè)路徑稠鼻。
多路徑配置好處:
1)提升讀寫性能:比起單塊磁盤冈止,多塊物理磁盤同時(shí)讀寫數(shù)據(jù)有更高的吞吐量。
2)能夠?qū)崿F(xiàn)故障轉(zhuǎn)移:即 Failover候齿。這是 Kafka 1.1 版本新引入的強(qiáng)大功能熙暴。要知道在以前,只要 Kafka Broker 使用的任何一塊磁盤掛掉了慌盯,整個(gè) Broker 進(jìn)程都會(huì)關(guān)閉周霉。但是自 1.1 開始,這種情況被修正了亚皂,壞掉的磁盤上的數(shù)據(jù)會(huì)自動(dòng)地轉(zhuǎn)移到其他正常的磁盤上俱箱,而且 Broker 還能正常工作。
zookeeper.connect :ZooKeeper鏈接地址灭必,負(fù)責(zé)協(xié)調(diào)管理并保存 Kafka 集群的所有元數(shù)據(jù)信息狞谱,比如集群都有哪些 Broker 在運(yùn)行、創(chuàng)建了哪些 Topic禁漓,每個(gè) Topic 都有多少分區(qū)以及這些分區(qū)的 Leader 副本都在哪些機(jī)器上等信息跟衅。
listeners: 監(jiān)聽器,其實(shí)就是告訴外部連接者要通過什么協(xié)議訪問指定主機(jī)名和端口開放的 Kafka 服務(wù)璃饱。
advertised.listeners:和 listeners 相比多了個(gè) advertised与斤。Advertised 的含義表示宣稱的、公布的,就是說這組監(jiān)聽器是 Broker 用于對(duì)外發(fā)布的撩穿。
host.name/port:列出這兩個(gè)參數(shù)就是想說你把它們忘掉吧磷支,壓根不要為它們指定值,畢竟都是過期的參數(shù)了食寡。
auto.create.topics.enable:是否允許自動(dòng)創(chuàng)建 Topic雾狈。
unclean.leader.election.enable:是否允許 Unclean Leader 選舉。-- auto.leader.rebalance.enable:是否允許定期進(jìn)行 Leader 選舉抵皱。
log.retention.{hours|minutes|ms}:這是個(gè)“三兄弟”善榛,都是控制一條消息數(shù)據(jù)被保存多長(zhǎng)時(shí)間。從優(yōu)先級(jí)上來說 ms 設(shè)置最高呻畸、minutes 次之移盆、hours 最低。
log.retention.bytes:這是指定 Broker 為消息保存的總磁盤容量大小伤为。
message.max.bytes:控制 Broker 能夠接收的最大消息大小咒循,默認(rèn)的 1000012 太少了,還不到 1MB
2.2 Topic 級(jí)別參數(shù):
Topic 級(jí)別參數(shù)會(huì)覆蓋全局 Broker 參數(shù)的值绞愚,而每個(gè) Topic 都能設(shè)置自己的參數(shù)值叙甸,這就是所謂的 Topic 級(jí)別參數(shù)
- retention.ms: Topic 消息保存的時(shí)長(zhǎng)。默認(rèn)是 7 天位衩,即該 Topic 只保存最近 7 天的消息裆蒸。一旦設(shè)置了這個(gè)值,它會(huì)覆蓋掉 Broker 端的全局參數(shù)值糖驴。
- retention.bytes: Topic 預(yù)留多大的磁盤空間僚祷。和全局參數(shù)作用相似,這個(gè)值通常在多租戶的 Kafka 集群中會(huì)有用武之地遂赠。當(dāng)前默認(rèn)值是 -1久妆,表示可以無限使用磁盤空間。
- max.message.bytes跷睦。它決定了 Kafka Broker 能夠正常接收該 Topic 的最大消息大小。
Topic 級(jí)別參數(shù)的有兩種方式可以設(shè)置:
- 創(chuàng)建 Topic 時(shí)進(jìn)行設(shè)置:
bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transaction --partitions 1 --replication-factor 1 --config retention.ms=15552000000 --config max.message.bytes=5242880
- 修改 Topic 時(shí)設(shè)置:
bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=10485760
2.3 JVM 參數(shù)
- KAFKA_HEAP_OPTS:指定堆大小肋演。
- KAFKA_JVM_PERFORMANCE_OPTS:指定 GC 參數(shù)抑诸。
$> 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
2.4 操作系統(tǒng)參數(shù)
- 文件描述符限制:建議設(shè)置一個(gè)超大值,例如: ulimit -n 1000000
- 文件系統(tǒng)類型:XFS 的性能要強(qiáng)于 ext4爹殊,所以生產(chǎn)環(huán)境最好還是使用 XFS
- Swappiness:建議設(shè)置接近于0的值蜕乡,例如:1
- 提交時(shí)間