Kafka内存配置主要涉及JVM堆内存和Broker缓冲区内存,具体调整方式如下:
-
JVM堆内存设置
修改kafka-server-start.sh中KAFKA_HEAP_OPTS,设置初始堆(-Xms)和最大堆(-Xmx)为相同值,避免动态调整开销,建议不超过物理内存的50%。例如:export KAFKA_HEAP_OPTS="-Xms8G -Xmx8G -XX:+UseG1GC" # 使用G1垃圾回收器- 可选参数:
-XX:MaxGCPauseMillis(控制GC暂停时间,默认100ms,生产环境建议20-50ms)。
- 可选参数:
-
Broker缓冲区内存(buffer.memory)
在server.properties中设置,控制消息缓冲区大小,建议为可用内存的50%-70%,避免挤压页缓存。例如:buffer.memory=16GB # 32GB内存服务器可设为16GB-21GB -
其他关键参数
- 日志相关:
log.retention.hours(保留时间)、log.segment.bytes(日志段大小),影响磁盘占用和内存间接使用。 - 生产者/消费者:
batch.size(批量大小,增大可提升吞吐但增加延迟)、fetch.min.bytes(消费者单次拉取最小字节数,减少网络往返)。
- 日志相关:
注意事项:
- 配置前需在测试环境验证,避免生产环境直接修改导致性能问题。
- 监控堆内存使用(如通过JMX或Prometheus),及时调整避免OOM。