Kafka生产者Linux性能调优指南
-Xms和-Xmx),建议设置为物理内存的1/4~1/2(避免过大导致GC停顿)。ulimit -n 65535),避免生产者因文件描述符耗尽而无法发送消息(Kafka生产者需要大量文件描述符处理网络连接和磁盘文件)。vm.swappiness(建议设置为10以下),减少系统使用交换分区(Swap)的概率(避免内存不足时频繁换页,导致性能下降);vm.dirty_background_ratio(建议设置为5~10)和vm.dirty_ratio(建议设置为10~20),优化脏页刷新策略(平衡内存写入和磁盘I/O,避免突发写入导致延迟)。net.core.wmem_default、net.core.rmem_default、net.core.wmem_max、net.core.rmem_max),提升网络传输效率(减少因缓冲区不足导致的数据重传)。sendfile系统调用(Kafka默认启用),减少数据从内核缓冲区到用户空间的拷贝次数(降低CPU开销,提升数据传输效率)。batch.size(建议设置为1MB~3MB),合并多个小消息为一个批次发送(减少网络请求次数,提升吞吐量);linger.ms(建议设置为10~100ms),让生产者等待更多消息加入当前批次(平衡延迟和吞吐量,过小会导致批次不饱满,过大则增加延迟)。compression.type(推荐lz4,压缩比高于Snappy且CPU开销更低),减少网络传输的数据量和磁盘存储空间(适用于高带宽成本或低延迟要求的场景)。acks参数:
acks=0(无需等待确认,性能最高但可靠性最低,适用于允许数据丢失的场景);acks=1(等待Leader确认,平衡性能与可靠性,适用于大多数业务场景);acks=all(等待所有ISR副本确认,可靠性最高但性能最低,适用于金融等严格要求数据不丢失的场景)。buffer.memory(建议设置为64MB~128MB),增加生产者缓存消息的空间(避免因内存不足导致发送阻塞)。num.partitions(建议与消费者线程数基本相等),提高并行处理能力(分区越多,消费者并发消费的能力越强,但过多的分区会增加ZooKeeper的负担和Broker的管理开销)。-Xms和-Xmx),建议设置为物理内存的1/4~1/2(避免过大导致Full GC停顿,过小则频繁GC)。kafka-producer-perf-test.sh脚本进行压力测试(模拟高吞吐量场景,评估不同配置下的性能表现,如吞吐量、延迟、错误率)。server.log),分析警告和错误信息(如BufferExhaustedException表示缓冲区不足,NotEnoughReplicasException表示副本数不够),针对性地调整配置。