vm.swappiness
为1(禁用swap),防止内存溢出导致性能下降。log.dirs
配置为多个目录(如/data/kafka1,/data/kafka2
),实现并行读写。noatime
选项(禁用文件访问时间戳更新),减少磁盘I/O开销。vm.dirty_background_ratio=10
(后台脏页刷新阈值)、vm.dirty_ratio=60
(强制脏页刷新阈值),平衡I/O性能与系统响应速度。fs.aio-max-nr=1048576
(默认65536),提升磁盘I/O并发能力。net.core.rmem_default=262144
、net.core.wmem_default=262144
、net.ipv4.tcp_wmem="4096 16384 131072"
、net.ipv4.tcp_rmem="4096 65536 1048576"
,提高网络传输效率。ulimit -n 65535
(临时生效),并在/etc/security/limits.conf
中永久设置(如* soft nofile 65535
),避免Broker因文件描述符不足拒绝连接。num.partitions
:根据业务需求设置(如每秒10万条消息,每个分区处理1万条,则需10个分区),确保充分利用CPU核心。default.replication.factor
:设置为3(生产环境推荐),兼顾数据可靠性与吞吐量(避免过高副本数导致同步延迟)。log.segment.bytes
:设置为1GB(默认1GB),减少日志段文件数量,降低文件系统元数据操作开销。log.retention.ms
:根据业务需求设置(如7天),避免日志文件长期占用磁盘空间。compression.type
:启用lz4压缩(比gzip吞吐量更高、CPU开销更低),减少网络传输和磁盘I/O。num.io.threads
:设置为CPU核数的50%(如8核设置为4),处理磁盘写操作;num.network.threads
设置为CPU核数的50%(如8核设置为4),处理网络请求。-Xms4G -Xmx4G
),避免过大堆内存导致Full GC停顿。-XX:+UseG1GC
),减少GC对吞吐量的影响。batch.size
设置为1MB(默认16KB),linger.ms
设置为100ms(默认0ms),允许生产者积累更多消息后批量发送,减少网络请求次数。compression.type
设置为lz4(与Broker一致),降低网络传输成本。acks
设置为1(默认),平衡吞吐量与可靠性(若需强一致性,可设置为all
,但会降低吞吐量)。fetch.max.bytes
设置为1MB(默认1MB),fetch.max.wait.ms
设置为1000ms(默认500ms),增加每次拉取的数据量,减少网络请求次数。max.poll.records
设置为500(默认500),max.poll.interval.ms
设置为300000ms(默认5分钟),避免因处理慢导致消费者被踢出组。group.instance.id
(如instance-1
),避免消费者短暂离线触发不必要的重平衡,提升消费稳定性。replica.lag.time.max.ms
设置为60000ms(默认10秒),允许副本在一定时间内落后Leader,减少同步延迟;num.replica.fetchers
设置为CPU核数的50%(如8核设置为4),提高副本同步效率。session.timeout.ms=10000
(默认10秒)、heartbeat.interval.ms=3000
(默认3秒),避免频繁重平衡;启用静态成员(group.instance.id
),减少重平衡触发次数。log.dirs
目录,删除过期日志(通过log.retention.ms
配置),确保磁盘空间充足(建议剩余空间≥20%)。kafka-producer-perf-test
(生产者压测)和kafka-consumer-perf-test
(消费者压测)工具,模拟实际负载,验证优化效果(如调整batch.size
后,观察吞吐量是否提升)。