买服务器选区域这件事,我以前都是搜个「云服务器延迟测试」,挑一个绿的。后来发现这类网站和厂商自己的 Looking Glass 有个共同点:都是从机房发起测试。机房出口是好几家运营商的优质线路,测出来当然好看,但我家是一条北京联通宽带,晚上八九点国际出口挤成什么样,它们完全测不到。
我想要的答案其实很朴素:从我这条线出去,现在这个时间,哪个区域最快。
所以写了 Me2Cloud:m2c.1ms.dog
打开就能测,请求是从你的浏览器直接发给各家厂商的。现在收了 17 家:AWS 、Azure 、Google Cloud 、阿里云、腾讯云、华为云、火山引擎、百度智能云、Oracle 、IBM 、Vultr 、DigitalOcean 、Linode 、Hetzner 、OVH 、Scaleway 、Naver ,一共 361 个区域。

今天中午我在家测了 6 家、172 个区域,快速模式跑完大概 3 分钟。AWS 北京 7.7 ms 、阿里云北京 8.2 ms 、阿里云青岛 15 ms ,腾讯云最快的是上海 29 ms ,Azure 最快的是首尔 83 ms ,Google Cloud 最好的是洛杉矶 175 ms ,Hetzner 新加坡 500 ms 。这种结果你在机房测速网站上是看不到的。
结果按中位数分成五档:夯、顶级、人上人、NPC 、拉完了。也可以先选用途(打游戏、视频会议、SSH 、建站),它会按对应的延迟和抖动要求挑出最合适的三个。
下面说几个做的时候想得比较多的地方。
为什么用 HTTPS 请求,不用 ping ?
一个现实原因是浏览器发不了 ICMP 。但就算能发,我也不太想用:你的网站、API 、走 443 的隧道都是 TCP ,而不少运营商对 ICMP 是另外排队、另外限速的,ping 看着很好、网页却很慢的情况并不少见。

HTTPS 的代价是每次请求会多一点服务器处理时间。我挨个测过:AWS 大概 0–5 ms ,阿里云 8 ms 左右,华为云 OBS 20 ms 左右。到了 100 ms 以上这点差别基本可以忽略;但测很近的区域时,数字会比 ping 略高,这个要心里有数。另外第一个请求要握手,不计入结果,后面的请求复用同一条连接,测的是纯粹的一来一回。
平时开着代理怎么办?
如果你平时开着全局代理,测出来很可能新加坡、东京、法兰克福都差不多,那其实是你到代理节点的延迟。页面会先看一眼你的网络:出口是不是机房 IP 、系统时区和出口国家对不对得上、WebRTC 和 HTTPS 是不是从同一个出口出去。觉得不对就会提示,并给出直连规则,Clash/Mihomo 、Surge 、Shadowrocket 、Quantumult X 、Loon 、sing-box 、Xray 、SwitchyOmega 都有。

规则这块我改过好几版。最早有些工具里用的是 amazonaws.com、aliyuncs.com 这种后缀匹配,写起来省事,但会把你所有的 S3 下载、阿里云 OSS 流量也一起改成直连,有的在国内直连反而更慢。现在的规则只列测试真正用到的 413 个域名,一个通配符都没有。
几百个区域一起测,会不会被厂商拦?
请求太密,厂商的 WAF 或限速会先找上来,测出来的数就不准了。所以同一个域名同时只有一个请求,间隔至少 250 ms ,单次最多 21 个请求,连续失败 3 次就跳过。算下来比打开一个普通网页的流量还少。
测试数据会传到哪?
哪也不传。测试没有后端服务器,不需要登录,结果只存在你自己的浏览器里。所有请求都可以在 F12 的 Network 里看到,页面上也有一份请求记录。

分享也一样不经过服务器:分享链接是把结果压缩后塞进 URL 里,这张分享图是测完在浏览器里用 canvas 直接画出来的。
开源,也可以自己部署
代码是 MIT 协议: github.com/yt1988/me2cloud
整个站是纯静态文件,构建好的页面已经在仓库里了,用 Cloudflare Workers 的静态资源托管,免费也不计量:
git clone https://github.com/yt1988/me2cloud && cd me2cloud
npx wrangler deploy
不想部署也没关系,页面上可以直接加「自定义端点」,把你自己的 VPS 地址填进去,就能和这些大厂放在一张图里比。
它测不了什么
测的是你这一个地方,不代表你的用户,最好让几个用户也打开跑一下。测的是厂商公开的 API 或存储接口,不是你将来那台虚拟机,CN2 GIA 这类精品线路可能会不一样。也不测带宽、不测 UDP 。还有,晚上 8 点到 11 点再测一次,那才是真实的水平。
这东西一开始是给自己选机房用的。如果你有想加的厂商或区域,或者发现哪个节点测不通,欢迎提 issue ,或者直接在下面回复。