noatime选项(避免不必要的文件访问时间更新,减少磁盘IO)。vm.swappiness=1(严格限制系统使用swap分区,避免频繁磁盘交换导致性能骤降);调整脏页刷新参数:vm.dirty_background_ratio=10(后台刷脏页阈值)、vm.dirty_ratio=60(强制刷脏页阈值),平衡内存利用与磁盘IO。sysctl -w net.core.rmem_max=16777216 # 接收缓冲区最大值(16MB)
sysctl -w net.core.wmem_max=16777216 # 发送缓冲区最大值(16MB)
sysctl -w net.core.rmem_default=16777216 # 默认接收缓冲区
sysctl -w net.core.wmem_default=16777216 # 默认发送缓冲区
sysctl -w net.core.somaxconn=32768 # 监听队列最大长度
sysctl -w net.ipv4.tcp_max_syn_backlog=16384 # SYN队列长度
num.network.threads(处理网络IO的线程数)设置为CPU逻辑核数+1(如4核CPU设置为5),负责接收客户端请求。num.io.threads(处理磁盘读写的线程数)设置为CPU逻辑核数×2(如4核CPU设置为8),负责消息刷盘、索引更新等操作。log.segment.bytes(单个日志段文件大小)设置为2GB-5GB(默认1GB),减少日志切换频率,降低IO开销。log.flush.interval.ms(强制刷盘时间间隔)设置为1000ms(默认1000ms),log.flush.interval.messages(累计消息数触发刷盘)设置为10000(默认10000);若使用SSD,可适当增大这两个值以提升吞吐(如log.flush.interval.ms=5000)。socket.request.max.bytes(单次请求最大数据量)设置为100MB-200MB(默认100MB),避免因请求过大导致内存溢出(需根据业务消息大小调整,如大消息场景可设置为200MB)。batch.size(单个批次最大字节数)设置为1MB-10MB(默认16KB),增大批次可减少网络请求次数,提升吞吐(如电商大促场景设置为5MB)。linger.ms(批次等待时间)设置为50ms-100ms(默认0ms),允许生产者在发送前等待更多消息进入批次,平衡延迟与吞吐。compression.type(压缩算法)设置为lz4(吞吐量优于snappy,压缩率高于gzip),减少网络传输和磁盘IO。acks(消息确认机制)设置为1(默认1,leader写入即确认),平衡可靠性与延迟;若需强一致性(如金融交易),设置为all(所有ISR副本写入成功)。retries(失败重试次数)设置为3-10(默认0),retry.backoff.ms(重试间隔)设置为1000ms(默认100ms),应对网络抖动。fetch.min.bytes(单次拉取最小字节数)设置为1MB-5MB(默认1字节),fetch.max.wait.ms(拉取最大等待时间)设置为1000ms(默认500ms),增大拉取量减少网络请求。max.partition.fetch.bytes(单分区最大拉取字节数)设置为2MB-4MB(默认1MB),匹配生产者批次大小,避免拉取过小导致频繁请求。max.poll.records(单次poll最大记录数)设置为500-1000(默认500),max.poll.interval.ms(poll最大间隔)设置为300000ms(默认5分钟),避免消费者处理过慢导致rebalance。session.timeout.ms(消费者会话超时时间)设置为15000ms-30000ms(默认10000ms),避免因处理延迟误判消费者失联。enable.auto.commit(自动提交偏移量)设置为false(默认true),改为手动提交(commitSync或commitAsync),精准控制消费进度,避免重复消费或丢失。replication.factor(副本数)设置为3(跨AZ部署,强一致性场景),2(允许短暂数据丢失场景)。min.insync.replicas=2(最小同步副本数),unclean.leader.election.enable=false(禁止非ISR副本成为leader),确保数据可靠性。kafka-topics.sh --describe查看分区ISR状态,kafka-consumer-groups.sh --describe监控消费延迟(records-lag)。log.retention.hours=72(日志保留时长,如3天),log.retention.bytes(日志大小限制),定期清理旧日志,避免磁盘空间耗尽。kafka-configs.sh动态修改参数(如增加分区数):./kafka-configs.sh --bootstrap-server localhost:9092 --alter --add-config num.partitions=6 --entity-type topics --entity-name my_topic
避免重启Broker影响服务。