环境:北京联通 9929 1G 宽带 ↔ 日本BestVM软银 1G 口 VPS
系统:Alpine
测试:Windows iperf3 对拉(多次重复验证)
现象对比
原先参数(高速度)
这里贴一下原先使用参数:
cat > /etc/sysctl.conf << EOF
fs.file-max = 6815744
net.ipv4.tcp_no_metrics_save=1
net.ipv4.tcp_ecn=0
net.ipv4.tcp_frto=0
net.ipv4.tcp_mtu_probing=0
net.ipv4.tcp_rfc1337=0
net.ipv4.tcp_sack=1
net.ipv4.tcp_fack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_adv_win_scale=1
net.ipv4.tcp_moderate_rcvbuf=1
net.core.rmem_max=67108864
net.core.wmem_max=67108864
net.ipv4.tcp_rmem=4096 87380 67108864
net.ipv4.tcp_wmem=4096 16384 67108864
net.ipv4.udp_rmem_min=8192
net.ipv4.udp_wmem_min=8192
net.ipv4.ip_forward=1
net.ipv4.conf.all.route_localnet=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.forwarding=1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
EOF
sysctl -e -p /etc/sysctl.conf
特点:整体能跑到接近千兆,但启动阶段爆重传,且偶发“断流/卡死”
- 速度:后半程稳定接近 940~960 Mbps
- 问题:前 1 秒 Retr 爆炸(上万级),有时触发 RTO 退避导致连续 0bits/sec,体验就是“有时候拉得动,有时候直接断”

现在参数(质量优先)
目标:速度可以慢一点,但要 稳定不断流 + 重传尽可能低
结果(多次测试一致):
- Retr:0
- 不再出现连续 0bits/sec 的断流/卡死
- 吞吐:稳定在 ~730–800 Mbps(牺牲峰值换稳定)

核心思路:
- 收敛发送缓冲上限(避免把启动突发放大)
- 适度 TSQ(tcp_limit_output_bytes)
- 开启 tcp_mtu_probing
- 不引入太“激进”的参数
最终参数
cat > /etc/sysctl.conf << EOF
fs.file-max = 6815744
net.ipv4.tcp_no_metrics_save=1
net.ipv4.tcp_ecn=0
net.ipv4.tcp_frto=0
net.ipv4.tcp_mtu_probing=1
net.ipv4.tcp_rfc1337=0
net.ipv4.tcp_sack=1
net.ipv4.tcp_fack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_adv_win_scale=1
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_limit_output_bytes=524288
net.ipv4.tcp_slow_start_after_idle=0
net.core.rmem_max=8388608
net.core.wmem_max=8388608
net.core.rmem_default=262144
net.core.wmem_default=262144
net.ipv4.tcp_rmem=4096 262144 8388608
net.ipv4.tcp_wmem=4096 262144 8388608
net.ipv4.udp_rmem_min=8192
net.ipv4.udp_wmem_min=8192
net.ipv4.ip_forward=1
net.ipv4.conf.all.route_localnet=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.forwarding=1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
EOF
sysctl -e -p /etc/sysctl.conf
简化 给最大缓冲观察0重传的速度 比如850M重传200 800 0 限制tc在800 重新观察 直到稳定0重传后锁定你的参数 晚高峰调
技术贴帮顶
不想大力飞砖的话只求稳定可以搞个 bpftune 变成自动挡
@qq82348074 #3 明白了大佬,感谢讲解。我没采用tc限制有一点是,这台机主要来跑hy2协议的,所以没有去加tc限制,纯在原有参数上进行了改动
@lhordez #4 建议直接用tc放进rc.local文件中 添加默认开机启动 直接用参数的话 debian系统少数重启后有bug不起作用 我测试是这样 不知道适合你不
技术贴帮顶
@qq82348074 #5 好滴,之后我再试试
@lhordez #7 9929拉best和acck哪个效果好
@qq82348074 #8 都还挺不错的。best好的一点是可以跑hy2协议,之前测试ak的貌似有阻断,跑一会儿就断了
@lhordez #9 哦哦 我也正研究拉软银方案呢