Kafka在CentOS上的优化需围绕硬件资源、操作系统、Kafka配置、JVM及监控五大维度展开,以下是具体优化措施:
data=writeback优化,但仍不如XFS)。vm.swappiness参数设置为1(默认60),禁用或最小化Swap使用,避免频繁磁盘交换导致性能骤降。ulimit -n命令将单个进程可打开文件数设置为65535以上(Kafka需处理大量文件描述符,如日志段、Socket连接),并在/etc/security/limits.conf中永久生效。vm.max_map_count参数(默认65530),设置为262144以上,避免Kafka因内存映射区域不足而报错。vm.dirty_background_ratio(设置为10以下,后台刷脏页的阈值)和vm.dirty_ratio(设置为60-80,系统强制刷脏页的阈值),平衡I/O性能与系统响应时间。num.partitions(建议与消费者线程数基本相等),提升并行处理能力;default.replication.factor=3(生产环境推荐),保证数据可靠性;min.insync.replicas=2(需小于副本数),确保数据同步的可靠性。log.segment.bytes=1G(默认1GB,过大导致日志切换慢,过小增加元数据开销);log.retention.ms=7d(根据业务需求设置保留时间,避免磁盘空间耗尽);log.cleanup.policy=delete(默认删除旧数据,若需压缩可选择compact,适用于日志类场景)。batch.size=1M(批量发送的消息大小,提升吞吐量)、linger.ms=100(等待批量发送的时间,平衡延迟与吞吐量)、compression.type=lz4(启用压缩,减少网络传输和磁盘IO,推荐LZ4算法,性能优于Snappy)。fetch.max.bytes=1M(每次拉取的最大数据量)、max.poll.records=500(每次poll的最大记录数),提升拉取效率。num.replica.fetchers=2(副本同步线程数,提升副本同步效率);replica.lag.time.max.ms=60000(副本同步超时时间,默认10秒,根据网络状况调整,避免因短暂延迟导致副本脱机)。KAFKA_HEAP_OPTS设置初始堆内存(-Xms)与最大堆内存(-Xmx)相等(如-Xms4G -Xmx4G),避免堆内存动态扩展导致的GC停顿。-XX:+UseG1GC),并设置-XX:MaxGCPauseMillis=20(目标最大GC暂停时间,不超过100ms),减少GC对系统的影响。-XX:+ParallelRefProcEnabled(并行处理引用对象)、-XX:+UnlockExperimentalVMOptions(解锁实验性选项)、-XX:+DisableExplicitGC(禁用显式GC调用,避免System.gc()导致的停顿)。kafka-topics.sh(查看Topic详情)、kafka-consumer-groups.sh(查看消费者组状态)等命令行工具。/var/log/kafka/下的日志),避免磁盘空间耗尽;可通过log.retention.ms参数自动清理旧日志。以上优化措施需根据实际业务场景(如吞吐量、延迟、可靠性要求)和硬件环境(如CPU、内存、磁盘类型)进行调整,建议在测试环境中验证后再应用于生产环境。