一、硬件及基础设施优化
net.core.somaxconn=32768增加监听队列长度,net.ipv4.tcp_max_syn_backlog=8192提升SYN请求处理能力,net.core.rmem_max/net.core.wmem_max=16777216增大读写缓冲区),减少网络拥塞和延迟。二、操作系统参数调整
ulimit -n 65536,并在/etc/security/limits.conf中永久设置),避免因文件描述符耗尽导致连接拒绝。vm.swappiness=1-10(减少磁盘交换,避免因内存不足导致频繁换页影响性能);优化文件系统挂载选项(如noatime禁用访问时间更新,减少磁盘I/O;使用XFS或EXT4高性能文件系统)。三、Kafka Broker配置优化
num.network.threads(处理网络请求的线程数,建议设为CPU核心数的1-2倍,如4核CPU设为4-8);根据磁盘数量和性能调整num.io.threads(处理IO操作的线程数,建议设为磁盘数量的1-2倍,如2块磁盘设为2-4),提升并发处理能力。num.partitions),建议大于消费者数量(如10个消费者设为10-16),并随集群规模增长逐步增加(分区是并行处理的基本单位,太少会导致并行度不足);设置高副本因子(default.replication.factor=3,确保数据冗余,即使部分节点故障也能保证数据不丢失)。log.retention.hours=168,如7天)和日志段大小(log.segment.bytes=1GB,如1GB),避免单个日志段过大导致恢复缓慢;启用日志压缩(log.cleanup.policy=compact,针对Key-Value型数据,保留每个Key的最新值,减少存储占用);调整日志刷新策略(log.flush.interval.messages=10000,log.flush.interval.ms=1000,平衡数据持久化和写入性能,避免频繁刷盘导致I/O瓶颈)。compression.type=lz4,推荐LZ4算法,压缩率高且CPU开销小),减少网络传输和存储开销(如消息量大时可降低带宽占用约30%-50%)。四、JVM调优
-Xms和-Xmx设为相同值,如4GB-8GB),避免动态扩展带来的停顿(如-Xms4G -Xmx4G);避免堆内存过大(超过8GB可能导致Full GC时间过长)。-XX:+UseG1GC),适合大内存堆,可设置最大GC暂停时间(-XX:MaxGCPauseMillis=200,如200ms)和触发并发GC的堆占用率(-XX:InitiatingHeapOccupancyPercent=45,如45%),减少GC对系统的影响。五、监控与告警机制
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec)监控消息流入流出情况。六、集群管理与故障处理
kafka-topics.sh检查Topic状态,kafka-console-producer.sh/kafka-console-consumer.sh测试生产消费,kafka-log-dirs.sh检查日志段状态);制定应急预案(如Broker宕机时自动切换Leader,数据恢复流程),并定期演练(如模拟Broker故障,验证恢复时间)。七、数据可靠性保障
default.replication.factor=3(生产环境推荐),确保每个分区有3个副本(1个Leader、2个Follower);通过min.insync.replicas=2(建议设为副本数-1)保证写操作的可靠性(只有当2个副本确认写入成功时,Broker才返回成功响应)。enable.auto.commit=false),改为手动提交(consumer.commitSync()),确保消息处理完成后再提交位移,避免消息丢失或重复消费。