一、Broker 级性能调优参数
Broker 是 Kafka 数据流转的核心节点,其配置直接影响集群吞吐量、延迟与稳定性。
num.partitions(默认1)需根据数据量与消费者数量设置(建议每个 Broker 承载100~200个分区),提升并行处理能力;default.replication.factor(默认1)需设置为≥3,保证数据冗余;min.insync.replicas(默认1)需设置为≥2,确保数据同步可靠性(配合acks=all使用)。num.network.threads(默认3)控制网络请求处理线程数,建议设置为CPU核心数的1~2倍;num.io.threads(默认8)控制磁盘IO线程数,建议设置为磁盘数量的2~3倍(如8块磁盘设置为16)。socket.send.buffer.bytes(默认102400)与socket.receive.buffer.bytes(默认102400)分别设置发送/接收缓冲区大小,建议调整为128KB~1MB,提升网络传输效率;message.max.bytes(默认1000012)与replica.fetch.max.bytes(默认1048576)控制单条消息/副本抓取的最大数据量,需适配应用发送的大payload场景(如设置为10MB)。log.segment.bytes(默认1GB)设置日志分段大小,建议调整为2~5GB,减少文件切换开销;log.retention.hours(默认168,7天)设置日志保留时间,需根据业务需求调整(如30天),避免磁盘空间耗尽。二、Producer 级性能调优参数
Producer 是消息写入的起点,优化其配置可显著提升写入吞吐量与可靠性。
batch.size(默认16KB)控制批量消息大小,建议调整为64KB~1MB(如1MB),减少网络请求次数;linger.ms(默认0)设置消息等待批量填满的时间,建议调整为10~50ms,平衡吞吐与延迟。compression.type(默认none)启用消息压缩,推荐zstd(压缩率高、延迟低)或lz4(低延迟),减少网络传输与存储开销;acks(默认1)控制确认机制,建议设置为all(等待所有副本确认),保证数据可靠性;enable.idempotence(默认false)启用幂等性,避免网络重试导致的消息重复(需配合acks=all使用)。buffer.memory(默认32MB)设置生产者缓冲区大小,建议调整为512MB~1GB,防止消息积压;retries(默认0)设置重试次数,建议设置为10~20次,应对网络抖动;retry.backoff.ms(默认100)设置重试间隔,建议调整为500ms,避免频繁重试。三、Consumer 级性能调优参数
Consumer 是消息消费的终点,优化其配置可提升消费并行度与延迟。
fetch.min.bytes(默认1)设置单次拉取的最小数据量,建议调整为1MB,减少网络请求频率;max.poll.records(默认500)控制每次轮询的最大消息数,建议调整为500~1000(高吞吐场景)或10~100(低延迟场景);max.partition.fetch.bytes(默认1MB)设置单分区拉取上限,建议调整为5~10MB,匹配高吞吐场景;concurrency(消费者线程数)需等于分区数,提升并行消费能力。enable.auto.commit(默认true)建议设置为false,改为手动提交偏移量(commitSync/commitAsync),保证业务处理完成后再提交;auto.offset.reset(默认latest)设置偏移量重置策略,建议设置为earliest(从头开始消费)或latest(忽略历史数据),适配业务需求;heartbeat.interval.ms(默认3000ms)设置心跳间隔,建议调整为3~5s,维持消费者组稳定;session.timeout.ms(默认10000ms)设置会话超时时间,建议调整为10~30s,快速检测宕机消费者;max.poll.interval.ms(默认5分钟)设置单次处理耗时上限,建议调整为30s~5分钟,适配复杂业务逻辑。四、JVM 级性能调优参数
Kafka 基于 Java 开发,JVM 配置直接影响内存管理与GC性能。
-Xms(初始堆大小)与-Xmx(最大堆大小)需设置为相同值(如4~16GB),避免堆大小动态调整的开销;建议为物理内存的50%~75%(如16GB内存设置为8GB~12GB)。-XX:+UseG1GC(G1垃圾回收器),适合大堆内存场景,平衡吞吐量与延迟;-XX:MaxGCPauseMillis(最大GC停顿时间,如100~200ms)与-XX:InitiatingHeapOccupancyPercent(触发GC的堆占用率,如45%)可优化GC行为,减少停顿时间。-XX:MetaspaceSize(元空间初始大小,如256MB)与-XX:MaxMetaspaceSize(元空间最大大小,如512MB)设置元空间大小,避免元空间溢出;-XX:MaxDirectMemorySize(直接内存最大大小,如1~4GB)设置直接内存大小,用于NIO操作,减少堆内存压力。-Xss(线程栈大小,如256KB)设置线程栈大小,减少内存占用;-XX:+TieredCompilation(启用分层编译)与-XX:TieredStopAtLevel=1(优化编译速度)提升JIT编译效率。五、操作系统级性能调优参数
操作系统是 Kafka 运行的基础环境,优化其配置可提升磁盘与网络性能。
ext4或XFS文件系统(XFS更适合高并发场景);挂载时添加noatime选项(禁用访问时间更新),减少文件系统写操作。vm.swappiness(交换内存使用比例)设置为1~10,减少交换内存使用,避免OOM Killer终止进程;为操作系统预留20%~30%内存作为页缓存,加速磁盘读写。net.core.rmem_max(接收缓冲区最大值)、net.core.wmem_max(发送缓冲区最大值)设置为16MB~32MB;net.ipv4.tcp_rmem(TCP接收缓冲区)与net.ipv4.tcp_wmem(TCP发送缓冲区)设置为4096 87380 16777216,优化TCP传输性能;fs.file-max(最大文件描述符数)设置为100000~200000,支持高并发连接。