国外 VPS 下载速度只有 100KB 怎么排查瓶颈

文章导读
国外 VPS 下载速度低至 100KB/s 通常由网络链路拥堵、服务商带宽限制或单线程下载瓶颈导致。排查应优先区分是本地网络问题还是 VPS 出口带宽问题,避免盲目调整系统内核参数。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
A A

国外 VPS 下载速度低至 100KB/s 通常由网络链路拥堵、服务商带宽限制或单线程下载瓶颈导致。排查应优先区分是本地网络问题还是 VPS 出口带宽问题,避免盲目调整系统内核参数。

先说结论:多数情况是单线程 TCP 连接受限于高延迟下的拥塞控制,或服务商对特定 IP 段进行了限速。

  • 先定位:区分本地网络、中间链路、VPS 出口三个环节。
  • 先做:使用多线程工具测试,排除单连接带宽延迟积限制。
  • 再验证:对比不同时间段、不同测试文件的速度变化。

命令速用版

以下命令用于快速收集网络状态数据,需在 VPS 和本地分别执行。

# 本地测试下载速度(单线程)
curl -o /dev/null http://VPS_IP/largefile.zip

# VPS 测试上传速度(排除本地下载瓶颈)
iperf3 -c 测试服务器 IP -u -b 100M

# 检查链路丢包和延迟
mtr -rwc 10 VPS_IP

# 查看网卡实时流量
iftop -P -n

为什么会这样

高延迟链路下单线程 TCP 吞吐量受带宽延迟积(BDP)限制,无法跑满带宽。

国外 VPS 通常物理距离较远,往返延迟(RTT)较高。TCP 协议在丢包或高延迟环境下会触发拥塞控制机制,减小发送窗口。如果只使用单线程下载(如浏览器默认或 wget 单连接),速度容易被限制在较低水平。此外,服务商可能对 ICMP 或特定端口进行 QoS 限速,导致测速正常但实际下载慢。

分步处理

按顺序执行以下步骤,每一步确认结果后再进行下一步。

步骤 1:排除本地网络问题

在本地网络使用 speedtest-cli 测试国际带宽。如果本地访问其他国外站点也慢,问题可能在本地运营商出口。

步骤 2:验证 VPS 出口带宽

登录 VPS,使用 iperf3 连接到邻近的测试节点。如果 VPS 上传速度正常,说明 VPS 带宽未受限,问题在链路或本地下载方式。

步骤 3:检查路由链路

使用 mtr 命令从本地追踪到 VPS。观察是否有特定节点丢包率超过 10%。如果中间节点持续丢包,联系服务商更换路由或 IP。

步骤 4:调整下载方式

使用支持多线程的工具(如 aria2、axel)下载文件。命令示例:aria2c -x 16 -s 16 http://VPS_IP/file。多线程可以绕过单连接 TCP 窗口限制。

怎么验证是否生效

执行多线程下载后,观察总速度是否提升。如果单线程 100KB/s,多线程能达到 1MB/s 以上,说明是 TCP 窗口限制而非带宽不足。

查看 VPS 网卡流量监控(如 vnstat 或 iftop),确认下载时网卡发送流量是否匹配下载速度。如果网卡流量高但本地接收低,说明链路丢包严重。

常见坑

  • 混淆磁盘 IO 与网络速度:下载速度慢时,先检查 VPS 磁盘写入速度(dd 测试),避免误判。
  • 峰值时段拥堵:晚间国际出口拥堵常见,建议在非峰值时段复测对比。
  • 防火墙限制:本地防火墙或安全组可能限制并发连接数,导致多线程失效。

常见问题

为什么 Speedtest 测速正常但下载文件慢?

Speedtest 通常使用多线程且连接优化过的节点,而普通下载是单线程且连接具体文件服务器。

更换 TCP 拥塞控制算法有用吗?

在高丢包链路上,将算法改为 BBR 可能提升吞吐量,但需内核支持且不能解决物理链路拥堵。

是否应该开启 UDP 加速?

UDP 加速可绕过 TCP 拥塞控制,但会增加流量消耗且可能违反服务商条款,需谨慎评估。