在 Debian 上运行 Kafka 时,发现内存占用很高,通常不是“泄漏”,而是由 Kafka 的设计机制 + JVM + 系统缓存共同导致的。下面按常见原因 → 解释 → 解决建议说明。
free -h 中 buff/cache 很大available)并不小Kafka 不自己缓存消息,而是依赖 Linux 的 Page Cache:
✅ 这是正常且推荐的行为,不是问题
free -h
cat /proc/meminfo | grep -i cache
buff/cache 高就慌java 进程 RES 很高-XmxKafka 官方建议:
KAFKA_HEAP_OPTS="-Xms12G -Xmx12G"
KAFKA_HEAP_OPTS="-Xms6G -Xmx6G"
堆小 → 更多内存留给 Page Cache → 性能更好
每个 partition 都有:
例如:
kafka-server-start.sh --version
Debian 默认不会限制 Kafka 内存
swapon --show
# 1. 看内存分布
free -h
# 2. 看 Kafka 进程内存
ps aux | grep kafka
# 3. 看 JVM 参数
ps -ef | grep Xmx
# 4. 看 partition 数
kafka-topics.sh --bootstrap-server localhost:9092 --describe
Debian 上 Kafka “内存高”大多是正常的 Page Cache + JVM 配置问题,而不是真的泄漏。
如果你愿意,可以贴一下:
free -hKAFKA_HEAP_OPTS我可以帮你精确判断是哪一类问题。