Debian上优化Kafka内存使用的实用方案
一 内存架构与总体原则
log.flush.interval.* 强制刷盘,可靠性由副本机制保障,强制刷盘会放大内存与I/O压力。二 快速落地步骤
[Service] 中加入:Environment="KAFKA_HEAP_OPTS=-Xms4G -Xmx4G"
Environment="KAFKA_JVM_PERFORMANCE_OPTS=-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35"
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
执行:systemctl daemon-reload && systemctl restart kafka。容器场景需保证容器内存上限大于堆(例如堆 6G,容器 mem_limit 至少 8G)。log.segment.bytes=1073741824(1GB)log.retention.hours=72(按业务SLA调整)message.max.bytes=1048576(1MB)replica.fetch.max.bytes=1048576(1MB)num.network.threads(≈ CPU 核数)num.io.threads(≈ CPU 核数的 2 倍,视负载而定)三 操作系统与容器层优化
/etc/security/limits.conf 增加kafka soft nofile 65536kafka hard nofile 65536/etc/sysctl.conf 增加vm.max_map_count=262144sysctl -p 生效。vm.dirty_background_ratio 适度降低、vm.dirty_ratio 适度提高,以平衡写回时机与停顿。mem_limit 必须大于 -Xmx;为堆外/页缓存预留充足空间(例如堆 6G 时容器至少 8G)。KAFKA_HEAP_OPTS、KAFKA_JVM_PERFORMANCE_OPTS。四 监控与迭代
kafka-consumer-groups --bootstrap-server <broker> --describe --group <group>;kafka-topics --describe --topic <topic> --bootstrap-server <broker>。