作为分布式消息系统,Kafka的网络传输性能直接影响整体吞吐量和延迟。以下是针对Kafka网络传输的关键优化配置:
socket缓冲区大小
socket.send.buffer.bytes=1024000 # 默认100KB,建议1MB
socket.receive.buffer.bytes=1024000
TCP参数优化
socket.request.max.bytes=104857600 # 请求最大字节数(默认100MB)
批量发送配置
batch.size=16384 # 16KB批量大小
linger.ms=5 # 等待批量填充的时间
压缩配置
compression.type=snappy # 或lz4/gzip
发送缓冲区
buffer.memory=33554432 # 32MB发送缓冲区
网络线程配置
num.network.threads=3 # 处理网络请求的线程数
IO线程配置
num.io.threads=8 # 处理磁盘IO的线程数
连接限制
max.connections.per.ip=100 # 每个IP最大连接数
拉取大小配置
fetch.max.bytes=52428800 # 每次拉取最大50MB
max.partition.fetch.bytes=1048576 # 每个分区最大1MB
拉取间隔
fetch.max.wait.ms=500 # 拉取等待时间
Nagle算法禁用
socket.nodelay=true
TCP保活机制
socket.keepalive=true
Linux系统级优化
# 增大TCP窗口大小
echo 'net.ipv4.tcp_window_scaling = 1' >> /etc/sysctl.conf
echo 'net.core.rmem_max = 16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 16777216' >> /etc/sysctl.conf
sysctl -p
kafka-producer-perf-test
和kafka-consumer-perf-test
进行基准测试kafka.network:type=SocketServer
注意:所有参数需根据实际硬件配置和业务需求进行调整,建议先在测试环境验证效果。