1.
先决条件与环境检测
检查系统与网络基础是成功优化的第一步。操作步骤:
- 登录:ssh root@你的VPSIP;确认有 sudo 权限。
- 内核版本:uname -r(建议 >= 4.9 支持 BBR)。
- 测试延迟与丢包:ping -c 10 目标IP;mtr -r -c 100 目标IP。记录 RTT、丢包率。
- 带宽基准:在 VPS 和一个可靠的远端(最好是位于服务端或回程链路的测试主机)运行 iperf3:iperf3 -s(远端),iperf3 -c VPSIP -P 4 -t 30(本地)。
2.
启用并验证 BBR 拥塞控制
BBR 能显著提高高延迟链路的带宽利用率。实操:
- 查看是否支持:sysctl net.ipv4.tcp_available_congestion_control。
- 临时开启:sysctl -w net.ipv4.tcp_congestion_control=bbr;sysctl -w net.core.default_qdisc=fq。
- 永久生效:在 /etc/sysctl.conf 或 /etc/sysctl.d/99-bbr.conf 添加:net.core.default_qdisc=fq 和 net.ipv4.tcp_congestion_control=bbr,然后 sysctl -p。
- 验证:lsmod | grep bbr 或 sysctl net.ipv4.tcp_congestion_control 返回 bbr,并用 ss -ti 看拥塞算法。
3.
关键内核网络参数调优(sysctl)
按需调整下列参数,逐项测试并记录:
- 增加缓冲区:net.core.rmem_max=16777216;net.core.wmem_max=16777216。
- TCP 缓冲区自动调整:net.ipv4.tcp_rmem=4096 87380 16777216;net.ipv4.tcp_wmem=4096 65536 16777216。
- 打开窗口缩放/SACK/MTU 探测:net.ipv4.tcp_window_scaling=1;net.ipv4.tcp_sack=1;net.ipv4.tcp_mtu_probing=1。
- 增大 backlog:net.core.netdev_max_backlog=250000;net.core.somaxconn=65535。
修改后使用 sysctl -p 应用,并重测 iperf3/iperf。
4.
MTU / MSS 与路径MTU问题处理
跨境连接容易遇到 PMTU 问题,导致分片与重传:
- 测试 PMTU:ping -M do -s 1472 目标IP(IPv4,1472+28=1500)。逐步降低包大小找到最大可通包。
- 在 VPS 上使用 iptables 做 MSS clamp:iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu。保存规则并重启 netfilter。
- VPN 场景(OpenVPN):调整 tun/tap MTU 和 mssfix;WireGuard 则需在接口上设置 MTU,例如 wg set mtu 1420。
5.
队列与流量调度(tc 与 fq_codel)
避免缓冲膨胀(bufferbloat)能提升真实延迟体验:
- 安装 iproute2(tc)。
- 简单设置:tc qdisc replace dev eth0 root fq_codel。将 eth0 换成实际网卡名(ip link 查看)。
- 对上传口进行限速和优先级时使用 HTB + fq_codel 组合,示例命令可参考提供商文档。每次改动后用 ping/mtr 验证延迟是否稳定。
6.
网卡参数、卸载与 ring-buffer 调整
正确的网卡设置能发挥硬件性能:
- 查看并调整 ring:ethtool -g eth0 与 ethtool -G eth0 rx 4096 tx 4096(视网卡支持)。
- 关闭或开启 offload:ethtool -K eth0 tso on gso on gro on;若遇问题可尝试关闭。
- 监控队列压力:sar -n DEV 或 /proc/net/dev,配合 netstat/ss 观察连接数。
7.
VPN 与加密传输优化(推荐 WireGuard)
VPN 是常见瓶颈,优化方向:
- 优选 WireGuard(轻量、内核模块、低延迟)。安装并配置 mtu、PersistentKeepalive、允许多核处理。
- 若使用 OpenVPN:使用 UDP、cipher 选择 chacha20-poly1305(现代更快),启用 sndbuf/rcvbuf 调参(--sndbuf 524288 --rcvbuf 524288),并使用 --tun-mtu 与 --mssfix。
- 测试:iperf3 -c vpn_peer -u 或 -P 并发流数测试并记录变化。
8.
应用层优化(HTTP/HTTPS、并发与缓存)
服务端优化同样关键:
- 使用 Nginx/HAProxy 开启 keepalive、HTTP/2 并调大 worker_connections 与 keepalive_timeout。
- 启用 gzip/brotli、静态资源使用 CDN 或边缘缓存,减少跨洋请求。
- 对大文件传输使用分片并发(aria2、多线程上传)或 HTTP range 并行下载,提高吞吐。
9.
监控、回归测试与迭代
每次修改都要可量化验证:
- 基准工具:iperf3(吞吐)、mtr(路径、丢包)、ping(延迟)、tcpdump(抓包分析)。
- 记录每一步前后的结果(RTT、丢包、吞吐),用表格对比找出影响最大项。
- 当某项改动效果不佳,回滚并尝试下一项;生产环境先在测试实例验证。
10.
Q1:为什么 CN2 到美国的链路传输效率比预期低?
答:常见原因包括 PMTU 问题导致分片/重传、拥塞控制不适配(未启用 BBR)、VPN/加密开销、网卡或队列配置不当以及中间路由器丢包或限速。通过上文的逐项检测和调整可定位瓶颈并改进。
11.
Q2:启用 BBR 会有风险吗?应该如何验证是否生效?
答:风险较低,但要确认内核版本支持并在生产前测试。启用后用 ss -ti 查看拥塞算法,iperf3 多并发测试对比启用前后带宽和延迟,并观察是否出现更多重传或不稳定情况,必要时回退。
12.
Q3:在 VPS 上如何快速定位是链路问题还是应用层瓶颈?
答:先用 iperf3 测试纯传输层带宽与丢包,若 iperf3 表现良好则为应用层问题(HTTP 配置、并发、TLS);若 iperf3 也差,则为链路/内核/网卡层面,继续用 mtr、tcpdump、sysctl 检查。
来源:如何通过优化配置提升美国cn2 vpstianyiidc的传输效率