Kafka内存配置需从JVM堆内存、缓冲区内存及系统层面综合优化,以下是关键建议:
JVM堆内存
kafka-server-start.sh
中KAFKA_HEAP_OPTS
设置,建议为物理内存的50%-70%,且不超过32GB(避免超出JVM优化范围)。-Xms8G -Xmx8G
(8GB服务器可设为4-6GB)。-XX:+UseG1GC -XX:MaxGCPauseMillis=20
以减少GC停顿。缓冲区内存
buffer.memory
参数控制消息缓冲,建议设为可用内存的50%-70%(需预留部分给JVM和系统)。
buffer.memory
根据吞吐量调整,避免堆积。fetch.min.bytes
和fetch.max.wait.ms
可减少拉取频次,优化内存使用。系统层面优化
-XX:MaxDirectMemorySize
控制,避免溢出。vm.swappiness=10
减少内存交换,net.core.rmem_max
增大TCP缓冲区。验证与调优
jstat
、jmap
监控JVM内存,或通过Prometheus+Grafana实时观测。核心原则:平衡JVM堆内存与系统内存,根据业务负载动态调整缓冲区,优先通过监控定位瓶颈。