Kafka内存配置主要涉及JVM堆内存和Broker缓冲区内存,具体设置如下:
一、JVM堆内存设置
通过修改启动脚本或环境变量配置:
- 修改启动脚本:编辑
kafka-server-start.sh,添加KAFKA_HEAP_OPTS参数,例如:
export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"(初始堆和最大堆设为4GB)。 - 通过环境变量:在
/etc/profile.d/kafka.sh中设置KAFKA_HEAP_OPTS,然后执行source使其生效。
二、Broker缓冲区内存设置
在server.properties中配置以下参数:
- buffer.memory:设置Broker内存缓冲区大小(默认32MB),建议为可用内存的50%-70%,例如:
buffer.memory=16384000(16GB)。 - log.segment.bytes:单个日志段大小(默认1GB),可根据分区数调整,避免过多小文件。
三、其他关键参数
- message.max.bytes:单条消息最大字节数,默认1MB,可根据业务需求调整。
- num.partitions:主题分区数,单Broker分区数建议不超过3万,避免内存压力过大。
四、注意事项
- 避免内存溢出:确保JVM堆内存+页缓存不超过物理内存的70%,预留足够内存给操作系统和其他进程。
- 监控与调优:使用
jstat、Prometheus+Grafana等工具监控内存使用,根据GC日志调整堆参数。 - 生产环境建议:优先使用G1垃圾收集器(
-XX:+UseG1GC),并设置MaxGCPauseMillis=20-50ms以减少GC停顿。
配置示例(server.properties):
# JVM堆内存(需在启动脚本中设置)
# buffer.memory(Broker缓冲区)
buffer.memory=16384000
# 日志段大小
log.segment.bytes=2147483648