Kafka在Debian上的性能调优技巧
log.dirs
指向高性能存储路径,且磁盘空间充足(建议预留20%以上空闲空间)。vm.swappiness
(Debian系统参数)至10以下,减少内存交换对性能的影响。net.core.rmem_max
、net.core.wmem_max
)增大网络缓冲区,提升吞吐量。num.partitions
:根据消费者线程数设置(建议与消费者线程数相等或略多),提升并行处理能力;num.network.threads
:设置为CPU总核数的2/3(如8核设置为5-6),处理网络请求;num.io.threads
:设置为CPU总核数的50%(如8核设置为4-5),负责磁盘I/O操作;num.replica.fetchers
:设置为CPU总核数的1/3(如8核设置为2-3),加速副本同步。compression.type
(推荐lz4
,兼顾压缩率与CPU开销),减少网络传输和存储压力。log.segment.bytes
:设置为1GB(默认1GB),减少日志分段数量,降低文件系统开销;log.retention.hours
:设置为168小时(7天),自动清理过期数据,避免磁盘空间耗尽。batch.size
:从默认16KB提升至128KB-1MB(如1MB),减少网络请求次数;linger.ms
:从默认0提升至50-100ms,允许生产者在发送前积累更多消息,提高批处理效率。acks
:根据需求选择(all
确保数据可靠性,1
平衡可靠性与吞吐量);buffer.memory
:设置为64MB以上(如128MB),避免生产者因缓冲区满而阻塞。fetch.min.bytes
:从默认1KB提升至1MB,减少消费者拉取频率;fetch.max.wait.ms
:从默认500ms提升至1000ms,允许消费者在拉取时积累更多数据,平衡延迟与吞吐量。max.poll.records
:设置为1000以上(如2000),单次拉取更多消息,提高消费效率;-Xms4G -Xmx4G
),避免频繁GC。-XX:+UseG1GC -XX:MaxGCPauseMillis=20
)。UnderReplicatedPartitions
、请求队列时间RequestQueueTimeMs
);或使用Kafka Manager、Confluent Control Center进行可视化监控。INFO
或DEBUG
),使用ELK Stack(Elasticsearch+Logstash+Kibana)或Splunk聚合分析日志,快速定位性能瓶颈。log.retention.hours
配置)、检查磁盘空间(使用df -h
命令)、升级Kafka版本(修复已知性能问题)。