Linux系统的默认网络配置通常偏向通用场景,在高并发或长距离传输时容易出现连接速度不理想的情况。通过合理优化内核参数与网络栈,可以显著降低延迟并提升吞吐能力。

一、调整TCP内核参数
最常用的优化方式是修改 /etc/sysctl.conf 中的TCP相关参数。以下配置适合大多数服务端场景:
# 临时生效与永久生效示例 # 增加本地端口范围 sysctl -w net.ipv4.ip_local_port_range="1024 65535" # 开启TIME_WAIT复用 sysctl -w net.ipv4.tcp_tw_reuse=1 # 增大最大半连接与全连接队列 sysctl -w net.ipv4.tcp_max_syn_backlog=8192 sysctl -w net.core.somaxconn=8192 # 调整读写缓冲区 sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216 sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
修改完成后执行 sysctl -p 让配置持久化生效。
二、开启BBR拥塞控制算法
BBR由Google提出,能在丢包网络中维持较高带宽。检查并开启方式如下:
# 查看当前可用算法 sysctl net.ipv4.tcp_available_congestion_control # 开启BBR sysctl -w net.core.default_qdisc=fq sysctl -w net.ipv4.tcp_congestion_control=bbr
若输出包含 bbr 则表示已加载成功。
三、网卡多队列与中断均衡
多核服务器应启用网卡多队列,并将中断分散到不同CPU:
# 查看队列数 ls /sys/class/net/eth0/queues/ # 使用irqbalance服务自动均衡 systemctl enable irqbalance systemctl start irqbalance
四、基础参数对照表
| 参数 | 默认值 | 建议值 | 作用 |
|---|---|---|---|
| tcp_tw_reuse | 0 | 1 | 复用TIME_WAIT端口 |
| tcp_max_syn_backlog | 1024 | 8192 | 提升半连接容量 |
| tcp_congestion_control | cubic | bbr | 改善拥塞表现 |
五、验证优化效果
可使用 iperf3 在两端做吞吐测试,对比优化前后数据:
# 服务端 iperf3 -s # 客户端 iperf3 -c 192.168.0.1 -t 30
若连接速度明显上升且重传率下降,说明优化生效。实际环境中应结合业务流量特点微调,避免盲目套用参数。