一、生产者配置调优
batch.size(默认16KB,建议64KB~1MB),减少网络请求次数;设置linger.ms(默认0,建议50ms~100ms),允许更多消息合并成批次,提升吞吐量(需权衡延迟)。compression.type(如LZ4/Snappy,默认none),压缩率可达30%~50%,减少网络传输数据量;根据可靠性需求选择acks:acks=1(Leader确认,平衡吞吐与可靠性)、acks=all(所有副本确认,高可靠但吞吐降低)。buffer.memory(默认32MB,建议512MB~1GB),防止消息积压导致阻塞;设置retries(如10次)和retry.backoff.ms(如500ms),避免网络抖动导致数据丢失。二、消费者配置调优
fetch.min.bytes(默认1字节,建议1MB),减少网络请求频率;设置max.poll.records(如500~1000),控制每次轮询的最大消息数,避免消费者处理超时。max.partition.fetch.bytes(默认1MB,建议5~10MB),匹配高吞吐场景。三、Broker配置调优
num.partitions(建议每个Broker承载100~200分区),提升并行处理能力;增加num.replica.fetchers(如4~8),加速Follower副本数据同步。num.io.threads为磁盘数量的2~3倍(如8~16),充分利用多磁盘I/O能力;增大socket.send.buffer.bytes和socket.receive.buffer.bytes(如128KB~1MB),提升网络传输效率。log.segment.bytes(默认1GB,建议2~5GB),减少文件切换开销;设置合理的log.retention.hours(如7~30天),避免磁盘空间耗尽。四、操作系统与硬件优化
vm.swappiness=1~10,减少交换内存使用,避免OOM Killer终止进程;增大文件描述符限制(ulimit -n)至100000+,支持高并发连接。五、监控与动态调整
kafka-configs.sh命令行动态修改参数(如调整主题副本数);通过Kafka AdminClient编程调整分区数或配置(如增加分区数);业务高峰期可临时增大batch.size和linger.ms,低峰期恢复默认值以降低延迟。