一、前期准备
准备工作
查看当前的 net.ipv4.tcp_wmem 参数值(最好记录一下)
sysctl net.ipv4.tcp_wmem
查询当前使用的 TCP 拥塞控制算法
sysctl net.ipv4.tcp_congestion_control
查看当前的队列管理算法
tc qdisc show
如未启用bbr+fq,请使用以下命令开启
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sysctl -p
服务端Linux安装iperf3
在Debian/Ubuntu系统上安装
apt update
apt install iperf3
防火墙放行端口 (这里以ufw为例,如果你没有开启防火墙可略过这一步)
ufw allow 5201
服务端启动iperf3
iperf3 -s
2. 客户端配置(Windows)
- 下载 iperf3 Windows 版本
- 测试下行速度(30秒)
iperf3 -c 服务端IP -R -t 30 -p 5201
- 测试上行速度(去掉-R参数)
iperf3 -c 服务端IP -t 30 -p 5201
二、参数优化流程
1. 参数调整方案
初始测试:使用 iperf3 获取基准性能数据
参数调优:
- 出现 0 重传或个位数重传:适当增大缓冲区(增加 2~4 MiB)
- 出现较高重传:减小缓冲区(减少 1~2 MiB)
优化步骤:
# 增大缓冲区(当发现 0 重传时) sysctl -w net.ipv4.tcp_wmem="4096 16384 理论值+3MiB" sysctl -w net.ipv4.tcp_rmem="4096 87380 理论值+3MiB" # 减小缓冲区(当发现高重传时) sysctl -w net.ipv4.tcp_wmem="4096 16384 理论值-2MiB" sysctl -w net.ipv4.tcp_rmem="4096 87380 理论值-2MiB"
最终调优:找到重传为 0 或低重传(100 以内)理想值,并根据稳定性需要再下调 0.5~1 MiB。
2. 参数持久化脚本
注意:脚本中的
2939240
仅需修改为实际的值。
#!/bin/bash
# 定义 TCP 缓冲区参数
TCP_WMEM="4096 16384 2939240"
TCP_RMEM="4096 87380 2939240"
# 更新配置文件
sed -i '/^net.ipv4.tcp_[wr]mem/d' /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = $TCP_WMEM" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = $TCP_RMEM" >> /etc/sysctl.conf
# 应用更改
sysctl -p
三、辅助工具
在线工具
自动优化脚本
wget -q https://raw.githubusercontent.com/BlackSheep-cry/TCP-Optimization-Tool/main/tool.sh -O tool.sh && chmod +x tool.sh && ./tool.sh
四、实际案例参数
不同环境参数参考
- v.ps-sjc 彦祖猫
net.ipv4.tcp_wmem = 4096 16384 2939240
net.ipv4.tcp_rmem = 4096 87380 2939240
- vmiss 伦敦
net.ipv4.tcp_wmem = 4096 16384 4326424
net.ipv4.tcp_rmem = 4096 87380 4326424
- 斯巴达-西雅图
net.ipv4.tcp_wmem = 4096 16384 237500000
net.ipv4.tcp_rmem = 4096 87380 237500000
- Netcup VPS1000
net.ipv4.tcp_wmem = 4096 16384 6278480
net.ipv4.tcp_rmem = 4096 87380 6278480
- 阿里云-hk-30m
net.ipv4.tcp_wmem = 4096 16384 90000
net.ipv4.tcp_rmem = 4096 87380 90000