Ubuntu系统优化Kafka性能的全链路策略
vm.swappiness设为1)。noatime选项(禁用访问时间更新,减少磁盘写操作)。ulimit -n 65535),避免Kafka因文件句柄不足拒绝连接;net.core.wmem_default、net.core.rmem_default设为1MB以上),提升网络传输效率;vm.swappiness=1),减少系统资源占用。num.network.threads:设置为CPU逻辑核心数的1-2倍(如8核CPU设为8-16),处理网络请求;num.io.threads:设置为CPU逻辑核心数的2-4倍(如8核CPU设为16-32),处理磁盘I/O操作(如日志刷盘)。log.segment.bytes:将日志段大小设置为1GB(默认1GB,无需修改),减少日志切换频率;log.flush.interval.messages:设置为10000条(SSD可适当增大),log.flush.interval.ms设置为1000ms(HDD设为3000ms),平衡数据持久性与性能(避免频繁刷盘导致I/O瓶颈)。num.partitions:根据预期吞吐量和消费者线程数设置(公式:分区数=max(预期吞吐量/单分区TPS, 消费者线程数*2)),增加分区数提升并行处理能力(如128分区可支持180万TPS);default.replication.factor:强一致性场景设为3(跨AZ部署),允许短暂数据丢失的场景设为2(减少网络和存储开销)。compression.type=lz4(兼顾压缩率与CPU开销,比gzip快且压缩率高),减少网络传输和存储成本。batch.size:设置为32KB-1MB(如32768字节),合并多条消息为一个批次,减少网络请求次数;linger.ms:设置为10-100ms(如10ms),等待批次填满后再发送,提高吞吐量;compression.type:使用lz4或snappy压缩(lz4性能更优),减少网络带宽占用。acks:根据需求设置(all保证数据不丢失,1平衡可靠性与吞吐量);buffer.memory:设置为32MB以上(如67108864字节),作为生产者缓冲区,避免因网络抖动导致消息丢失。fetch.min.bytes:设置为1MB以上(如1048576字节),减少消费者拉取次数;fetch.max.wait.ms:设置为100-1000ms(如1000ms),平衡延迟与吞吐量;max.partition.fetch.bytes:设置为2MB以上(如2097152字节),单分区最大拉取量,提升单次拉取效率。max.poll.records(如500条)控制单次poll的最大记录数,结合监控(如当前消费滞后量currentLag)动态调整,避免消费者过载。-Xms与-Xmx设为相同值,如4GB),避免堆内存频繁扩容(如export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G")。-XX:+UseG1GC),减少GC停顿时间(如-XX:MaxGCPauseMillis=20设置最大GC停顿时间为20ms),提升Kafka处理稳定性。server.log),清理过期日志文件(通过log.retention.hours设置保留时间,如168小时=7天),确保磁盘空间充足。