Debian下Kafka性能优化策略
num.partitions需与消费者线程数基本相等,确保并行处理能力;num.network.threads设置为总核数的2/3(处理网络请求),num.io.threads设置为总核数的50%(处理磁盘I/O),num.replica.fetchers设置为总核数的1/3(提升副本同步效率)。compression.type(如lz4),在吞吐量优先场景下降低网络传输和存储开销(需权衡少量CPU开销)。acks——业务要求强一致选all(确保所有副本同步),追求吞吐量选1(仅Leader确认)。buffer.memory设置为64MB以上,避免生产者因缓冲区满导致消息丢失。batch.size设置为1MB(减少网络请求次数),linger.ms设置为100ms以上(允许更多消息聚合,提升批处理效率)。compression.type使用lz4,acks设置为all(确保消息不丢失)。fetch.min.bytes设置为1MB(减少消费者拉取频率),fetch.max.wait.ms设置为1000ms(平衡延迟与吞吐量)。atime更新(减少磁盘IO);增加页缓存大小(至少容纳一个日志段,提升读取性能)。/etc/security/limits.conf,设置kafka soft nofile 65536、kafka hard nofile 65536(提升文件句柄上限);修改/etc/sysctl.conf,设置vm.max_map_count=262144(增加内存映射区域数量,避免Kafka启动失败)。kafka-server-start.sh)设置KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"(初始堆与最大堆相等,避免频繁扩容);或通过jvm.options文件修改(推荐)。-XX:+UseG1GC),设置-XX:MaxGCPauseMillis=20(控制最大GC停顿时间,避免Full GC导致的性能抖动)。num.network.threads设置为8(适配万兆网卡,提升网络收发能力);socket.send.buffer.bytes和socket.receive.buffer.bytes设置为1MB(增大网络缓冲区,提高吞吐量)。ip命令配置静态IP,确保listeners(Broker监听地址)和advertised.listeners(客户端连接的Broker地址)设置正确(如PLAINTEXT://your_server_ip:9090)。ethtool优化网卡性能(如sudo ethtool -K ens4 rx-flow-hash udp4 sdfn,调整UDP流哈希策略,提升多核利用率)。kafka-topics.sh --describe查看主题详情)、第三方监控工具(如Prometheus+Grafana)实时监控集群性能指标(吞吐量、延迟、错误率、分区分布等)。batch.size或分区数,延迟高则调整linger.ms或GC参数),持续优化性能。