1. 硬件配置优化
2. 操作系统参数调优
ulimit -n 65536临时设置,或修改/etc/security/limits.conf永久生效(如* soft nofile 65536; * hard nofile 65536)。/etc/sysctl.conf文件,调整以下参数提升网络性能:
net.core.somaxconn=65536:增加TCP连接队列长度,避免连接拒绝;net.ipv4.tcp_max_syn_backlog=65536:提高SYN包队列大小,应对高并发连接请求;net.ipv4.tcp_tw_reuse=1:允许复用TIME-WAIT状态的连接,减少资源占用。echo never > /sys/kernel/mm/transparent_hugepage/enabled禁用,提升内存访问效率。3. Kafka Broker配置优化
num.network.threads:设置为CPU核数+1,处理网络请求(如接收生产者消息、响应消费者请求);num.io.threads:设置为CPU核数×2,处理磁盘I/O操作(如日志写入、读取)。log.flush.interval.messages:设置为10000~50000(每累计1万~5万条消息刷盘一次),减少刷盘频率,提高吞吐量;log.flush.interval.ms:设置为1000~5000ms(每1~5秒刷盘一次),平衡数据持久性与性能。num.partitions:根据消费者线程数设置(如消费者有10个线程,则分区数≥10),提高并行处理能力;default.replication.factor:设置为3(生产环境推荐),保证数据可靠性;min.insync.replicas=2,确保数据同步到至少2个副本,避免数据丢失。log.retention.hours:设置为72~168小时(3~7天),自动清理过期日志,释放磁盘空间;log.cleanup.policy=compact:对Key-Value型Topic启用日志压缩,保留最新Key值,减少冗余数据存储。4. JVM性能调优
-Xms(初始堆内存)与-Xmx(最大堆内存)相等(如-Xms8g -Xmx8g),避免堆内存动态扩展导致的停顿;堆内存大小一般为物理内存的1/4~1/2(不超过32GB,避免JVM long GC问题)。-XX:+UseG1GC;调整-XX:MaxGCPauseMillis=20(目标最大GC停顿时间为20ms),-XX:InitiatingHeapOccupancyPercent=35(触发并发GC的堆占用率为35%),减少GC对系统性能的影响。5. Producer与Consumer配置优化
batch.size:设置为1MB~10MB(如-batch.size=1048576),批量发送消息,减少网络请求次数;linger.ms:设置为10~100ms(如-linger.ms=50),等待更多消息加入批次后再发送,提高批量效率;compression.type:设置为lz4或snappy(如-compression.type=lz4),压缩消息体,减少网络传输数据量(压缩率约为2~5倍)。fetch.min.bytes:设置为1MB~10MB(如-fetch.min.bytes=1048576),每次从Broker获取更多数据,减少网络请求次数;fetch.max.wait.ms:设置为100~500ms(如-fetch.max.wait.ms=200),平衡数据获取延迟与吞吐量(等待时间越长,单次获取数据越多)。6. 监控与维护
kafka-topics.sh --delete删除废弃Topic);每月升级Kafka版本(修复已知Bug,提升性能);每季度进行压力测试(使用JMeter或Gatling模拟高并发场景,评估集群性能)。