在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
)监控集群状态,重点关注分区负载、延迟和磁盘使用率。具体配置需根据业务负载和硬件环境调整,建议先在测试环境验证后再应用到生产环境。