机场测速很快但实际用起来很慢:Speedtest 跑满了为什么网页和视频还是卡
Speedtest 跑出几百兆但 YouTube 缓冲、网页半天打不开,是测速场景和真实场景不一样。本文讲测速服务器与真实目标的差别、单线程和多线程、落地到目标站点的距离、DNS 解析和流媒体 CDN 调度五个原因,以及每个怎么验证。
测速数字为什么会骗人
Speedtest 的设计目标是测「你到最近测速服务器的带宽上限」。它会自动挑一台离你(通过代理后就是离节点落地)最近的服务器,开十几条并发连接,往一个方向灌数据。这个场景和你日常用网几乎没有重叠。
日常用网是:单条连接、目标站点在世界各地、每次请求前要先解析域名、内容由 CDN 按它自己的逻辑分配。任何一个环节不配合,测速再快也没用。
下面五个原因,按出现频率排。
原因一:测速服务器和真实目标不是一回事
节点落地在洛杉矶,Speedtest 自动选了洛杉矶机房的测速服务器,两者在同一栋楼或隔壁,带宽当然满。而你要看的 YouTube、要用的网站,服务器可能在弗吉尼亚、在法兰克福、在东京,节点到那里还有几千公里,中间的质量测速完全没覆盖。
验证方法:Speedtest 里手动换服务器。选一个和你真实目标同城的(比如要用的服务在美东,就选纽约),数字掉一半以上很正常。再选一个东京的,再掉一截。这才是你实际访问各地服务时的大概带宽。
原因二:多线程和单线程
Speedtest 默认多线程,同时开 8 到 16 条连接把带宽拼起来。而浏览器打开网页、看视频、下载文件,大多数时候是一条或几条连接。
线路有丢包时,这个差距会被放大。单条 TCP 连接遇到丢包会主动降速,1% 的丢包就能让单线程速度掉一半。多线程里一条降速了,别的连接补上,总数看着还行。所以多线程测速掩盖了丢包问题。
验证方法:Speedtest 设置里切到单连接模式(Single connection),或者直接用浏览器下载一个几百兆的大文件,看稳定后的速度。单线程只有多线程的五分之一以下,说明线路丢包明显。丢包怎么处理见 延迟高、抖动大、丢包怎么办。
原因三:落地到目标站点的距离
节点落地决定了你在互联网上的「出发点」。从美国节点访问日本网站,流量从中国到美国再折返日本,跨越太平洋两次。延迟翻倍,丢包叠加。
常见的错误搭配:
- 用美国节点看日本、韩国网站
- 用香港节点访问美国东部的服务
- 用新加坡节点用欧洲的服务
验证方法:客户端里切到和目标同地区的节点,再打开同一个网站对比。差别明显就是距离问题。
处理:按目标选节点。日本内容用日本节点,美国服务用美国节点,欧洲服务用欧洲节点。Clash 类客户端可以写规则把不同域名分到不同节点组,一次配置以后自动分流。节点怎么分配见 节点怎么选。
原因四:DNS
打开任何网站第一步是解析域名。DNS 走错了,后面全错。
两种常见情况:
- DNS 没走代理,用了本地运营商 DNS。国外网站解析出来的 IP 是给中国用户准备的,往往是最近的 CDN 节点在国内或香港,而你的流量从美国落地绕回来访问它,极慢。
- DNS 走了代理但解析慢。每打开一个新域名多等几百毫秒,网页上几十个资源域名累加起来就是几秒钟的白屏。
验证方法:浏览器开发者工具里看请求瀑布图,每个请求前面「DNS Lookup」那一段有多长。或者在客户端里切换 DNS 模式(Fake-IP 和 Redir-Host)对比网页打开速度。
处理:Clash 类客户端用 Fake-IP 模式,域名不在本地解析,由落地服务器解析,拿到的是离落地最近的 CDN。详见 DNS 泄漏。
原因五:流媒体 CDN 调度
YouTube、Netflix、Twitch 这类平台不是从一台服务器发视频,而是由 CDN 根据你的 IP 决定从哪个边缘节点给你。它判断的依据是你的落地 IP。
同一个美国落地 IP,CDN 可能把你分配到一个本来就很忙的边缘节点,或者因为这个 IP 段是机房 IP(而不是住宅 IP),分到了限速较重的池子。测速服务器不管这些,所以测速正常、视频卡。
验证方法:YouTube 视频右键「详细统计信息」,看 Connection Speed 一栏,这才是 YouTube 实际给你的带宽。再和 Fast.com 对比,Fast.com 走的是 Netflix 的 CDN,更接近流媒体真实情况。
处理:换同地区另一个落地不同的节点,CDN 会重新分配。还是不行,说明这家机场的落地 IP 段被 CDN 归到了慢池子,这是机场层面的问题,只能换机场。流媒体场景的机场怎么挑见 流媒体机场推荐。
正确的测速方法
不要只看一个数字,测一组:
- Speedtest 多线程:看带宽上限,这是天花板。
- Speedtest 单线程或大文件下载:看实际能用多少。
- Fast.com:看流媒体 CDN 给的带宽。
- 客户端对目标地区节点的延迟。
- 直接打开你最常用的那几个网站,秒表计时。
四个数字都好看,才是真的快。只有第一个好看,就是本文说的情况。工具的详细用法见 机场测速工具。
一个实际例子
用户反馈:香港节点 Speedtest 跑 400 Mbps,但看 YouTube 1080p 都卡,Google 搜索也慢。
按本文的顺序排查:
Speedtest 手动换到东京服务器,掉到 80 Mbps;换到洛杉矶,30 Mbps。说明这个香港节点的落地到外部的互联一般,只有本地快。
单线程下载测试,20 Mbps。多线程 400、单线程 20,差 20 倍,说明线路丢包明显。ping 节点入口,丢包 4%。
YouTube 统计信息,Connection Speed 在 3000 到 8000 Kbps 之间跳,视频服务器地址在新加坡。CDN 把一个香港落地分到了新加坡边缘节点。
结论:这个节点的问题是丢包加 CDN 调度,和「测速 400 Mbps」完全不矛盾。换一个丢包低的香港节点,YouTube 恢复 4K。
这个例子里的每一步都在本文前面讲过,测的时候照着做就行。
什么情况是机场的锅
很多「测速快实际慢」是用法问题,机场是无辜的。但有几种确实是机场的问题:
- 节点落地机房到主要内容服务商的互联差。同一个地区的节点,别家机场去 Google 很快,这家慢,是它选的机房便宜。
- 落地 IP 段被各大 CDN 标记为机房 IP 或低信誉 IP,分到的服务质量差。表现是所有流媒体都慢,换节点也一样。
- 节点带宽标注虚高。宣传 1 Gbps 节点,实测多线程也只有 100 Mbps,是机场超售。
- 丢包在专线段。ping 入口不丢、专线节点依然丢包高,是机场的专线质量或超售。
这几种你自己解决不了,反馈给客服,没改善就换机场。
相关
常见问题
Speedtest 跑了 300 Mbps,为什么 YouTube 只有 1080p?
Speedtest 用多线程连到离节点最近的测速服务器,YouTube 是单个视频流从 Google 的 CDN 节点拉。两个目标不同、连接方式不同,测速数字对视频没有参考价值。
怎么测才能反映真实速度?
用 Fast.com(走 Netflix 的 CDN)、YouTube 统计信息里的连接速度,或直接下载一个大文件看单线程速度。多测几个目标,而不是只看一个 Speedtest 数字。
单线程速度和多线程速度差多少算正常?
差三到五倍很常见。多线程 300 Mbps 对应单线程 60 到 100 Mbps 是正常的;单线程只有几 Mbps 而多线程几百兆,说明线路丢包严重,单条 TCP 连接被压得很低。
节点在美国,为什么访问日本网站特别慢?
你的流量先到美国再折返日本,多绕了一个太平洋。访问哪个地区的网站就选那个地区或附近的节点,不要用一个节点打天下。
测速快、网页慢,有可能是 DNS 的问题吗?
有。DNS 解析没走代理或解析到了国内 CDN 地址,每打开一个新网站都要多等一次解析,或者被导向了离落地很远的服务器。在客户端里开启 DNS 远程解析或 Fake-IP 模式再对比。
本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。