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参数),持续优化性能。