1. 硬件资源优化:奠定性能基础
num.network.threads(网络请求处理线程)设置为CPU核心数+1,num.io.threads(磁盘IO线程)设置为CPU核心数×2(不超过3倍),以充分利用CPU并行能力。-Xms(初始堆)和-Xmx(最大堆)参数设置(如-Xms8g -Xmx8g),避免频繁GC;非堆内存包括元数据缓存(-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M)、直接内存(-XX:MaxDirectMemorySize=1G,用于网络数据包),需根据业务调整。log.dirs配置多个目录(挂载在不同物理磁盘),实现IO并行;调整日志刷新策略:log.flush.interval.messages(每10000条消息刷新)和log.flush.interval.ms(每1000ms刷新),平衡数据可靠性与性能;设置log.segment.bytes(1GB,日志段大小),减少频繁切换段文件的开销。2. Kafka配置参数优化:提升并行与效率
num.partitions(主题分区数)根据消费者线程数设置(建议每个消费者对应1个分区),提升并行处理能力;default.replication.factor(默认副本因子)设置为3(生产环境),保证数据可靠性,但需避免过多副本增加IO负载。num.network.threads(网络线程)设置为CPU核心数+1(如4核设为5),处理客户端请求;num.io.threads(IO线程)设置为CPU核心数×2(如4核设为8),处理磁盘读写;socket.send.buffer.bytes和socket.receive.buffer.bytes(套接字缓冲区)设置为100KB-200KB(如102400字节),提升网络传输效率。compression.type),推荐lz4(压缩率高、延迟低),减少网络传输量和磁盘占用,提升吞吐量。3. JVM调优:减少GC开销
-XX:+UseG1GC),适合Kafka的大内存、低延迟需求;设置-XX:MaxGCPauseMillis=100(最大GC停顿时间),平衡吞吐量与延迟。-XX:MetaspaceSize=256M),避免元数据加载导致的GC压力。4. 操作系统优化:减少系统瓶颈
noatime(不更新文件访问时间)、nodiratime(不更新目录访问时间)选项,减少磁盘IO;调整内核参数:vm.swappiness=1(减少交换空间使用)、vm.dirty_ratio=10(脏页比例阈值)、vm.dirty_background_ratio=5(后台写脏页比例),控制数据写回磁盘的频率。noop调度器(无调度开销),HDD设备使用deadline调度器(平衡读写延迟)。5. 监控与迭代调优:持续优化性能
kafka-producer-perf-test.sh),验证配置效果。