在 Ubuntu 上调整 Kafka 的内存,通常是指调整 JVM 堆内存(Heap Memory),因为 Kafka 是 Java 应用,主要吃 JVM 内存。下面按常见场景说明。
Kafka 的 JVM 参数主要在:
/opt/kafka/bin/kafka-server-start.sh
或(取决于安装方式):
/etc/kafka/kafka-env.sh
/usr/share/kafka/bin/kafka-server-start.sh
新版本 Kafka(2.0+)通常从:
KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
读取。
kafka-server-start.sh(最直接)编辑文件:
sudo vim /opt/kafka/bin/kafka-server-start.sh
找到类似内容:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
改为(例如 4G):
export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"
保存后,重启 Kafka:
sudo systemctl restart kafka
# 或
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
KAFKA_HEAP_OPTS 环境变量(推荐)如果是 systemd 启动:
sudo systemctl edit kafka
添加:
[Service]
Environment="KAFKA_HEAP_OPTS=-Xmx4G -Xms4G"
保存后:
sudo systemctl daemon-reload
sudo systemctl restart kafka
Kafka 依赖操作系统页缓存(Page Cache),而不是 JVM 堆:
| 机器内存 | 推荐 JVM 堆 |
|---|---|
| 4G | 1G |
| 8G | 2–3G |
| 16G | 4–6G |
| 32G+ | 8–10G |
✅ 原则:
JVM 堆 ≤ 50% 物理内存,剩余给 OS 页缓存
❌ 把 -Xmx 设到 30G(反而更慢)
❌ 只改 server.properties(那不是 JVM 参数)
❌ 忘了重启 Kafka
ps -ef | grep kafka
应看到:
-Xmx4G -Xms4G
jstat -gcutil <kafka_pid> 1000
或:
jmap -heap <kafka_pid>
-e KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"
同样改:
KAFKA_HEAP_OPTS
不影响 controller / broker 区分。
Ubuntu 上调 Kafka 内存 = 改
KAFKA_HEAP_OPTS,别给太大,重启生效。
如果你愿意,可以告诉我:
我可以帮你给一个最优内存配置。