在CentOS上分配Kafka资源需从硬件、JVM、Kafka配置及系统层面综合优化,以下是关键要点:
硬件资源
num.network.threads(建议设为CPU核数+1)和num.io.threads(建议设为CPU核数×2)优化线程数。kafka-server-start.sh中KAFKA_HEAP_OPTS设置JVM堆内存(如-Xms4G -Xmx4G),避免过大导致频繁GC;同时预留部分内存给系统缓存。log.dirs)分散磁盘压力,优先使用SSD提升I/O性能,设置合理的log.segment.bytes(默认1GB)和保留策略。JVM参数优化
-XX:+UseG1GC),并设置最大GC暂停时间(如-XX:MaxGCPauseMillis=20),减少GC对性能的影响。-XX:MetaspaceSize和-XX:MaxMetaspaceSize,建议256MB起)和日志缓存(-XX:LogCacheSize,建议1GB)。Kafka配置参数
num.partitions)提升并行处理能力,设置副本因子(default.replication.factor,建议≥2)保障数据可靠性。message.max.bytes(单条消息最大大小,默认1MB)和replica.fetch.max.bytes,优化网络传输效率。log.flush.interval.messages和log.flush.interval.ms平衡数据持久化和性能。系统层面优化
vm.swappiness(如设为1)减少交换分区使用,优化vm.dirty_ratio和vm.dirty_background_ratio控制脏页刷新。监控与调优
kafka-topics.sh、kafka-consumer-groups.sh)监控集群状态,重点关注分区负载、延迟和磁盘使用率。具体配置需根据业务负载和硬件环境调整,建议先在测试环境验证后再应用到生产环境。