在 Ubuntu 上部署 Kafka 时,“内存配置”通常包含 JVM 堆内存 和 操作系统 / 磁盘相关内存(页缓存) 两部分。下面按常见场景说明怎么设。
Kafka 本身依赖 JVM,默认堆内存偏小(早期版本 1G),生产环境必须调整。
Kafka 的 JVM 参数一般在:
/opt/kafka/bin/kafka-server-start.sh
# 或
/etc/kafka/kafka-server-start.sh
找到类似内容:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
修改为(示例:机器 16G 内存):
export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"
✅ 建议原则:
Kafka 堆内存一般 4–6G 足够,剩下内存给 page cache
| 机器内存 | 建议堆内存 |
|---|---|
| 8G | 2–3G |
| 16G | 4–6G |
| 32G | 6–8G |
| 64G+ | 8–12G |
Kafka 依赖 OS Page Cache 来加速读写,不需要你手动配置,但要保证:
free -h
看到大量 buff/cache 是正常现象 ✅
⚠️ 不要:
在 server.properties 中:
# 单个日志段大小
log.segment.bytes=1073741824
# 落盘策略(影响内存压力)
log.flush.interval.messages=10000
log.flush.interval.ms=1000
一般不需要改,除非极端性能调优。
如果你用 Zookeeper(非 KRaft 模式):
/etc/zookeeper/conf/environment
或:
export JAVA_OPTS="-Xms2G -Xmx2G"
如果是 Kafka 3.x+ 的 KRaft:
KAFKA_HEAP_OPTS="-Xms4G -Xmx4G" \
bin/kafka-server-start.sh config/kraft/server.properties
# kafka-server-start.sh
export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"
# OS
# 不关 swap
# 保证 page cache ≥ 8G
如果你愿意,可以告诉我:
我可以给你一套精确配置。