企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 集群参数配置 * Broker 端参数,AKA 静态参数(Static Configs) ## Broker 端参数 ### 与存储相关的参数 * 需要配置存储信息,i.e. Broker 使用哪些磁盘 * log.dirs * Broker 需要使用的若干个文件目录路径 * log.dir * 同上,表示单个目录 * 将 log.dirs 中的目录挂载到不同的物理磁盘 * 优势 * 提升读写性能 * 实现故障转移 ### 与 ZK 相关的参数 * zookeeper.connect ### 与 Broker 连接相关的参数 * listeners * advertised.listeners * host.name/port ### 关于 Topic 管理的参数 * auto.create.topics.enable * unclean.leader.election.enable * auto.leader.rebalance.enable ### 关于数据保留的参数 * log.retention.{hours|minutes|ms} * log.retention.bytes * message.max.bytes ## Topic 参数 * Topic 级别参数会覆盖全局 Broker 参数的值 * 每个 Topic 都能设置自己的参数值 * retention.ms * 规定了该 Topic 消息被保存的时长 * retentionn.bytes * 规定了为该 Topic 预留的磁盘空间 * max.message.bytes * Broker 能够正常接收 Topic 的最大消息大小 ``` shell 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 bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=10485760 ``` * ## JVM 参数 * KAFKA_HEAP_OPTS:指定堆大小 * KAFKA_JVM_PERFORMANCE_OPTS:指定 GC 参数 ## 操作系统参数 * 文件描述符限制 * ulimit -n * 可以配置 `ulimit -n 1000000` * 文件系统类型 * ZFS > XFS > ext4 > ext3 * Swappiness * 设置为较小值可能更好,比如 1 * swap 直接设置为 0,当物理内存耗尽时,会直接触发 OS OOM Killer 组件,随机挑选进程 kill * 如果 swap 设置较小的值,可以观察到 Broker 性能急剧下降 * 提交时间 * AKA Flush 落盘时间 * 向 Kafka 发送数据,只要数据写入到 OS 页缓存(Page Cache)就可以认为是成功,而非写入磁盘 * 随后 OS 根据 LRU 将 Page Cache 上的脏数据落盘到物理磁盘 * 默认 5s * 可以适当增加提交间隔来降低物理磁盘的写操作 * 如果在页缓存中的数据在写入到磁盘前机器宕机了,数据就丢失了 * 但同时考虑到 Kafka 已经提供多副本机制,因此稍微拉大提交时间换取性能是合理的