下面从 系统层、Kafka 本身配置、生产/消费端、运维监控 几个维度,给你一套在 Ubuntu 上优化 Kafka 的实用建议(以 Kafka 3.x + JVM 为例,适用于大多数生产/准生产环境)。
Kafka 是磁盘 IO 密集型系统。
mount -o noatime,nodiratime /dev/sdX /kafka
ext4 或 xfs(xfs 更稳)# /etc/security/limits.conf
kafka soft nofile 100000
kafka hard nofile 100000
vm.swappiness=1
net.core.somaxconn=4096
net.ipv4.tcp_max_syn_backlog=8192
sysctl -p
配置文件:config/server.properties
num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/kafka/logs1,/kafka/logs2
# 不依赖操作系统刷盘
log.flush.interval.messages=10000
log.flush.interval.ms=1000
# 段文件大小
log.segment.bytes=1073741824
default.replication.factor=3
min.insync.replicas=2
unclean.leader.election.enable=false
compression.type=snappy
# 8~16GB 内存机器
KAFKA_HEAP_OPTS="-Xms4g -Xmx4g"
KAFKA_JVM_PERFORMANCE_OPTS="
-Xms4g -Xmx4g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=20
"
acks=all
retries=3
batch.size=16384
linger.ms=5
compression.type=snappy
fetch.min.bytes=1024
fetch.max.wait.ms=100
max.poll.records=500
❌ 使用 RAID5
❌ 堆内存设太大(>8G)
❌ 所有 topic 用同分区数
❌ 忽略 consumer lag
num.partitions=6
default.replication.factor=1
log.segment.bytes=1G
如果你愿意,可以告诉我:
我可以直接帮你 给出一份可直接用的 server.properties。