1. 操作系统层实用配置
noatime
(禁用文件访问时间更新)、nodiratime
(禁用目录访问时间更新)参数,减少不必要的磁盘I/O。vm.swappiness=1
(默认60),降低系统使用Swap的概率,避免因内存不足导致频繁磁盘交换,影响Kafka性能。/etc/security/limits.conf
,增加Kafka进程的文件描述符限制(如* soft nofile 100000
、* hard nofile 100000
),避免因连接数过多导致服务中断。2. Kafka Broker核心配置
broker.id
必须为集群内唯一整数(如0、1、2);listeners
设置为PLAINTEXT://your_server_ip:9092
(非加密场景)或SASL_PLAINTEXT://your_server_ip:9092
(加密场景);advertised.listeners
需指向客户端可访问的地址(如公网IP或域名),确保客户端能正确连接。log.dirs
需指定多个物理磁盘路径(如/data1/kafka,/data2/kafka
),分散I/O压力,避免单磁盘成为瓶颈。zookeeper.connect
需填写Zookeeper集群地址(如zk1:2181,zk2:2181,zk3:2181
),建议使用奇数个节点(3或5个)保证高可用。3. 性能优化关键参数
num.partitions
(分区数)需根据消费者线程数调整(建议与消费者线程数相等或略多),提升并行处理能力;default.replication.factor
(默认副本因子)设置为3(生产环境),保证数据冗余和高可用。batch.size
(批量发送字节数)设置为1MB(生产者),平衡吞吐量与延迟;linger.ms
(发送等待时间)设置为100ms以上,允许更多消息合并;compression.type
(压缩类型)设置为lz4
(兼顾压缩率与速度),减少网络传输和磁盘I/O。num.io.threads
(I/O线程数)设置为CPU核心数的2倍(如8核CPU设置为16),处理磁盘读写和网络传输;buffer.memory
(内存缓冲区)设置为64MB以上(生产环境建议128MB),避免生产者因缓冲区满而阻塞。4. 安全配置建议
security.inter.broker.protocol=SASL_PLAINTEXT
、sasl.enabled.mechanisms=PLAIN
,并创建kafka_server_jaas.conf
文件(包含用户名/密码),启动时通过KAFKA_OPTS
指定该文件。listeners=SASL_SSL://your_server_ip:9092
、security.inter.broker.protocol=SASL_SSL
,并提供证书文件(如kafka.truststore.jks
、kafka.keystore.jks
),确保数据传输安全。5. 监控与维护实用建议
log.retention.hours
(日志保留时间)设置为168小时(7天)或更短(根据业务需求),log.cleanup.policy
(清理策略)设置为delete
(删除旧数据)或compact
(压缩重复数据,适用于日志场景),避免磁盘空间耗尽。server.log
),排查IO exception
等错误;每月清理过期日志,确保磁盘空间充足(建议使用率<70%)。