在 Ubuntu 上配置 Kafka 的内存,主要涉及 JVM 堆内存 和 操作系统 / 磁盘相关参数。下面按常见场景说明。
Kafka 是 Java 应用,内存主要通过 JVM 堆大小控制。
Kafka 启动时会读取:
/etc/kafka/server.properties
/opt/kafka/bin/kafka-server-start.sh
通常修改:
/opt/kafka/bin/kafka-server-start.sh
或(新版常见):
/etc/kafka/kafka-server-start.sh
找到这一行:
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
示例(8G 内存机器):
export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"
✅ 建议:
-Xms 和 -Xmx 设置成一样,避免抖动如果是通过 systemd 启动:
sudo systemctl edit confluent-kafka || sudo systemctl edit kafka
添加:
[Service]
Environment="KAFKA_HEAP_OPTS=-Xmx4G -Xms4G"
然后:
sudo systemctl daemon-reload
sudo systemctl restart kafka
在 server.properties 中:
Kafka 重度依赖 Linux Page Cache,不需要给 Kafka 太大堆。
✅ 建议:
log.segment.bytes=1073741824 # 1GB
log.flush.interval.messages=10000
log.flush.interval.ms=1000
Kafka 不希望用 swap:
sudo sysctl vm.swappiness=1
永久生效:
echo "vm.swappiness=1" | sudo tee -a /etc/sysctl.conf
ulimit -n 100000
systemd 中:
[Service]
LimitNOFILE=100000
| 机器内存 | Kafka 堆 | 说明 |
|---|---|---|
| 4G | 1–2G | 小集群 |
| 8G | 4G | 常见 |
| 16G | 6–8G | 生产 |
| 32G+ | 8–12G | 不要给太多 |
ps aux | grep kafka
jcmd <pid> VM.flags
如果你能告诉我:
我可以给你一套 直接可抄的配置。