提升 Apache Kafka 性能需要从生产者、Broker、消费者、硬件、配置、架构设计等多个维度综合考虑。下面按模块给你一份系统性的优化指南,适合生产环境落地。
linger.ms=5~20
batch.size=32KB~64KB
batch.size,减少请求次数linger.ms 允许稍等数据凑批compression.type=lz4 # 或 zstd
lz4(性能均衡)或 zstd(压缩率高)producer.send(record); // 不调用 get()
acks=1
0:最快,可能丢数据1:Leader 写入即返回(常用)all:最安全,性能最低retries=3
enable.idempotence=true
log.dirs=/data1/kafka-logs,/data2/kafka-logs
ext4 或 xfsreplication.factor=2~3
log.flush.interval.messages=10000
log.flush.interval.ms=1000
num.network.threads=8
num.io.threads=16
max.poll.records=500~2000
fetch.min.bytes=1KB
fetch.max.bytes=50MB
enable.auto.commit=false
-Xms8g -Xmx8g
-XX:+UseG1GC
vm.swappiness=1
record-send-raterequest-latency-avgUnderReplicatedPartitionsRequestHandlerAvgIdlePercentrecords-lagrecords-lag-max| 场景 | 优化手段 |
|---|---|
| 高吞吐日志 | lz4 + batch + acks=1 |
| 低延迟 | SSD + 少分区 + 同步少 |
| 稳定消费 | 手动提交 + 批量拉取 |
| 大规模集群 | 分区均衡 + 磁盘隔离 |
Kafka 性能优化的核心:批量、压缩、分区、磁盘、线程、架构。
如果你愿意,可以告诉我: