Debian系统下Kafka性能配置优化指南
ulimit -n
将文件描述符限制增大至100000+(永久生效需修改/etc/security/limits.conf
)。vm.swappiness
设为1~10(默认60),减少交换内存(Swap)使用,避免OOM Killer终止Kafka进程。noatime
选项(禁用访问时间更新),减少磁盘I/O开销。acks=all
时,建议设置为2(副本数≥3时),确保消息写入足够数量的副本后再返回成功,避免数据丢失。log.cleanup.policy=delete
(默认)自动清理过期日志。acks=1
(默认):Leader确认后即返回成功,平衡吞吐与可靠性(适合大多数场景);acks=all
:所有ISR(同步副本)确认后才返回成功,高可靠但吞吐降低(适合金融等关键业务)。retries=10
)与间隔(如retry.backoff.ms=500
),应对网络抖动或Broker暂时不可用;避免无限重试导致消息重复。max.poll.interval.ms
调整)。export KAFKA_HEAP_OPTS="-Xms6g -Xmx6g"
export KAFKA_JVM_PERFORMANCE_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:InitiatingHeapOccupancyPercent=35"
log4j.logger.kafka=INFO
),将日志输出至集中式日志系统(如ELK Stack);定期分析日志,排查潜在问题(如Broker重启、消费者偏移量提交失败)。kafka-log-dirs.sh
工具);备份关键数据(如使用Velero备份ZooKeeper数据);分批次滚动升级Kafka版本,确保服务不中断。batch.size
(1MB)、linger.ms
(100ms),启用lz4
压缩;Broker增加num.partitions
(每个Broker 100+分区);消费者增大fetch.min.bytes
(1MB)。linger.ms=0
、compression.type=none
,acks=0
(牺牲可靠性换取延迟);消费者增大max.poll.records
(1000+)、减小fetch.max.wait.ms
(100ms)。acks=all
、retries=10
;Broker设置default.replication.factor=3
、min.insync.replicas=2
;消费者确保enable.auto.commit=false
(手动提交偏移量,避免消息重复)。