一、硬件资源优化
num.network.threads(网络线程数,建议设为CPU核心数的1-2倍)和num.io.threads(I/O线程数,建议设为CPU核心数的2倍)以提升并发处理能力;确保网络带宽充足(如万兆以太网),减少网络瓶颈。二、操作系统级优化
noatime(禁用文件访问时间更新)、nodiratime(禁用目录访问时间更新)选项,减少不必要的磁盘写操作。vm.dirty_ratio=10(系统内存的10%)、vm.dirty_background_ratio=5(后台刷脏页的内存阈值),平衡写回磁盘的频率与性能;vm.swappiness=1(尽量使用物理内存,避免频繁Swap);ulimit -n 65535或修改/etc/security/limits.conf(添加* soft nofile 65535; * hard nofile 65535),支持更多并发连接。noop或deadline调度器(通过echo noop > /sys/block/sda/queue/scheduler设置),减少调度开销。三、JVM参数优化
-Xms(初始堆内存)与-Xmx(最大堆内存)为相同值(如8G-16G),避免堆内存动态扩展带来的性能抖动;新生代(-Xmn)设置为堆内存的50%-60%(如-Xmn4G),优化Minor GC效率。-XX:+UseG1GC),并通过-XX:MaxGCPauseMillis=100(设置最大GC停顿时间为100ms)、-XX:G1HeapRegionSize=16M(调整堆内存区域大小)等参数,平衡吞吐量与延迟。-XX:MetaspaceSize=256M(初始元空间大小)、-XX:MaxMetaspaceSize=512M(最大元空间大小),避免元空间溢出。四、Kafka Broker配置优化
num.partitions,如从1增加到8),提升并行处理能力;合理设置副本因子(default.replication.factor,如3),平衡数据可靠性与写入性能(副本越多,写入延迟越高)。log.segment.bytes=1G(默认100M),减少日志段切换频率,降低磁盘I/O开销;log.retention.hours=168(保留7天)、log.retention.bytes=1073741824(保留1G),避免日志文件无限增长占用磁盘空间;log.flush.interval.messages=10000(每1万条消息刷新一次)、log.flush.interval.ms=1000(每1秒刷新一次),平衡数据持久性与性能(减少刷新次数可提升吞吐量,但会增加数据丢失风险)。buffer.memory=8M(生产者缓冲区大小,可根据内存调整至16M-32M),提升生产者发送效率;socket.send.buffer.bytes=102400(发送缓冲区)、socket.receive.buffer.bytes=102400(接收缓冲区),优化网络传输性能;num.io.threads=16(根据磁盘数量与性能调整,如每块磁盘分配2个线程),提升磁盘读写效率。五、监控与维护
server.log、controller.log),关注错误信息(如副本同步失败、磁盘空间不足),及时排查问题。kafka-log-dirs工具)、备份重要数据、升级Kafka版本(修复已知bug、提升性能),确保集群稳定运行。