Kafka Linux网络设置优化指南
调整TCP参数以提升网络吞吐量与连接效率,编辑/etc/sysctl.conf文件,添加或修改以下关键参数:
net.core.rmem_max=16777216:增大TCP接收缓冲区最大值;net.core.wmem_max=16777216:增大TCP发送缓冲区最大值;net.ipv4.tcp_rmem=4096 87380 16777216:设置TCP接收缓冲区动态调整范围(最小/默认/最大);net.ipv4.tcp_wmem=4096 65536 16777216:设置TCP发送缓冲区动态调整范围;net.ipv4.tcp_fastopen=3:启用TCP快速打开,减少握手延迟;net.core.somaxconn=32768:增大TCP SYN队列长度,应对高并发连接请求;net.ipv4.tcp_max_syn_backlog=16384:增大SYN半连接队列长度。sysctl -p使配置生效。Kafka处理大量并发连接需更高的文件描述符上限,编辑/etc/security/limits.conf文件,添加以下内容:
* soft nofile 65536(软限制)、* hard nofile 65536(硬限制),避免因文件描述符不足导致连接拒绝。
修改server.properties文件,优化以下参数:
listeners=PLAINTEXT://your.server.ip:9092:明确Broker监听的IP和端口(替换为实际IP);advertised.listeners=PLAINTEXT://your.server.ip:9092:设置客户端连接的对外暴露地址(需与客户端配置一致);socket.send.buffer.bytes=1048576(1MB)、socket.receive.buffer.bytes=1048576(1MB):增大Socket发送/接收缓冲区,提升网络传输效率;num.network.threads=3(根据CPU核心数调整,建议2~4):增加网络线程数,提高网络IO处理能力;num.io.threads=8(根据磁盘数量和性能调整,建议4~8):增加IO线程数,加快磁盘写入速度;socket.request.max.bytes=104857600(100MB):增大单个Socket请求的最大大小,避免大请求被拆分。linger.ms=5,等待5ms合并请求;batch.size=16384,单批次最大16KB),减少网络请求次数;compression.type=snappy),减小传输数据量(通常可降低30%~50%带宽占用);acks=1,主副本确认即可),提高发送效率。server.log)和客户端日志,排查连接超时、丢包等问题;kafka-producer-perf-test和kafka-consumer-perf-test工具模拟实际负载,验证优化效果并调整参数。