拉丁美洲用户适合加拿大 VPS 吗?延迟测量指南
面向墨西哥、哥伦比亚、智利和西班牙用户,了解加拿大 VPS 何时适合,如何用约 10 分钟测量实际路由,并按 RTT 评估请求、握手与数据库开销。
对拉丁美洲用户来说,加拿大 VPS 是否合适?
当每个页面只需发起少量请求时,加拿大 VPS 适合拉丁美洲用户;当应用在每个页面上需要多次来回通信时,则不适合。从墨西哥城、波哥大、圣地亚哥或布宜诺斯艾利斯到多伦多的距离很远,任何提供商都无法缩短这段距离。您能控制的是:用户看到内容前,应用需要跨越这段距离多少次。
本指南有意不提供延迟数据。别人路由上的测量值无法说明您的情况,因为延迟取决于用户的运营商,以及该运营商与服务器之间的网络。您可以使用系统中已有的工具,在大约十分钟内测量自己的路由。本指南的后半部分介绍测量方法,以及如何解读工具输出的结果。
先说明一个术语。往返时间(RTT)是一个数据包到达服务器所需的时间,加上回复返回所需的时间。本指南将一次往返记为 R。下面的所有开销都使用 R 表示,因此您可以代入自己的测量值,得到适用于自己应用的结果。
一次往返的成本,以及它不会带来的影响
R 按每次交换计费,而不是按字节计费。这一事实决定了本页的其他所有内容。
批量下载几乎不会受到影响。 TCP(传输控制协议)连接建立并达到满速后,发送方无需等待回复即可继续发送下一个分段。大文件传输受带宽限制,而不是受距离限制。连接开始时会产生一次 R;发生丢包后还会再次产生 R,因为每个丢失的分段都需要额外一次往返来重传。因此,在带宽相同的情况下,长路径在有丢包的链路上受到的影响比短路径更大。
请求频繁的页面会完整承担延迟。 假设一个页面依次发出 20 个请求,并且每个请求都必须等待前一个请求的响应。最后一个响应开始返回前,该页面需要等待 20R。如果你的路径上的 R 约为十分之一秒,那么页面会在网络上等待约 2 秒。这段时间内服务器不执行任何工作。它在等待下一个请求到达,用户也在等待。
将应用与数据库拆分是代价高昂的错误。 页面每发出一个串行请求,都会承担一次用户与服务器之间的距离:上面的请求频繁页面需要 20R,而经过设计、请求数量较少的页面只需几次 R。数据库的距离则按每次查询计算,而且查询数量通常远多于请求数量。因此,如果数据库位于另一个区域,构建一个页面需要执行 300 次查询的代码就要承担 300R。将应用和数据库放在同一个数据中心。然后在其他约束允许的情况下,将这两个组件迁移到尽可能靠近用户的位置。
每个新的 HTTPS 连接都要承担握手成本。 TCP 在传输数据前需要一次往返。TLS(传输层安全协议)1.3 还需要额外一次,TLS 1.2 还需要额外两次。因此,浏览器建立新连接后,在 TLS 1.3 下通常要等待约 2R,在 TLS 1.2 下通常要等待约 3R,服务器才能读取请求中的第一个字节。复用连接可以跳过这些等待,所以在长路径上,keep-alive 和 HTTP/2 的重要性远高于短路径。
交互式 SSH(安全 Shell)会话的延迟最容易被你直接感受到。 远端会回显你输入的字符,因此每个字符都会在按键后经过 1 个 R 才显示在屏幕上。系统没有故障。这就是往返延迟,而你可以直接观察到它。mosh 软件包会在本地预测回显,因此在远程主机上编辑配置文件不再那么困难。
为什么网络路径比地图上的路线更长
数据包会沿着网络互联的位置传输,而这些位置很少位于地图上的最短直线上。南美到加拿大的流量通常会先经过迈阿密或美国东北部,因为运营商会在那里互联。运行 traceroute,并读取各跳的反向 DNS(域名系统)名称。许多运营商主机名中会包含类似机场代码的 mia、nyc、iad 和 yyz,这些代码可以显示数据包实际经过了哪些城市。
由此可以得出两个有用的事实。路由通常是不对称的,也就是说,从用户到服务器的路径并不是返回路径的反向路径,因此从两端分别运行 traceroute 可能会列出不同的城市。互联位置也会产生很大影响:圣保罗的 IX.br 是全球最大的互联网交换点(IXP)之一,因此留在巴西境内的巴西流量路径较短,而发送到加拿大的相同流量会离开巴西,进入漫长的国际路径。
西班牙的网络拓扑又有所不同。西班牙到加拿大需要向西横跨大西洋。西班牙到法兰克福则是在两个互联密集的欧洲城市之间进行较短的陆地传输。因此,无论价格看起来多么有利,加拿大几乎从来都不是面向西班牙用户提供服务的最佳位置。
加拿大 VPS 适用的情况
当关键用户或系统依赖项位于加拿大附近,或者您需要满足的是司法管辖要求而不是速度要求时,加拿大 VPS 才是合适的选择。
- 您的客户或雇主位于加拿大或美国北部。这样,延迟由您的拉丁美洲团队承担,而不是由用户承担;开发团队对延迟的容忍度通常远高于付费客户。
- 您希望数据存储在美国境外。这是法律和合同问题,而不是网络问题。在向客户作出这一表述前,请先阅读加拿大数据驻留实际能够保证什么,因为“托管在加拿大”和“不受外国命令管辖”是两种不同的说法。
- 您的支付处理商和其他 API 供应商在北美运行。服务器向它们发出的每次请求同样都需要一次往返,而且这些请求通常比用户向您发出的请求更多。靠近依赖项,有时比靠近用户更有利。
- 您已经在多伦多或蒙特利尔运行系统,希望使用一套网络和一条备份路径,而不是各自使用两套。
如果您的情况符合上述描述,加拿大 VPS 真正重要的选购标准介绍服务商选择,多伦多 VPS 能为您提供什么介绍加拿大最繁忙的部署位置。如果您仍在权衡边境本身的影响,加拿大与美国的比较会将网络因素与法律因素分开说明。
选择加拿大的错误理由
错误理由是觉得加拿大位于美国与世界其他地区之间,位置中立,因此选择加拿大。网络上不存在这样的中间位置,而且加拿大位于北美洲最北端。对拉丁美洲大多数地区而言,加拿大距离用户比美国更远。
- 您的用户在西班牙。马德里是最自然的部署地点。如果没有马德里机房可选,法兰克福 VPS 或 阿姆斯特丹 VPS 位于欧洲互联最密集的网络节点,两者都比北美任何城市更接近西班牙用户。
- 您的用户在巴西。应将服务部署在巴西:圣保罗 VPS 可让流量留在国内交换节点中,避免每个请求都先发送到另一大陆再返回。
- 您的用户在墨西哥。决定之前,应将加拿大与美国南部的地点进行测量,例如 达拉斯 VPS,因为从网络路径来看,得州通常更近。
- 您的用户在哥伦比亚、厄瓜多尔、委内瑞拉或加勒比地区。也应测量 纽约 VPS,因为其中大量流量前往其他地区时本来就会经过美国东海岸。
- 您托管的是游戏服务器,或任何以 R 为产品的服务。此时,位置是功能,而不是细节;为游戏服务器选择位置与为网站选择位置是两种不同的工作。
如何测量到加拿大 VPS 的路由?
只需安装一次工具。在 Ubuntu 或 Debian 上:
sudo apt update
sudo apt install -y mtr-tiny traceroute curl从最简单的测量开始。将目标设为您正在考虑的地址,或服务商提供的测试地址。
ping -c 20 vps.example.com查看最后两行。丢包百分比用于判断路径是否正常。rtt min/avg/max/mdev 摘要会给出 R,avg 值是您应据此规划的往返时间。min 与 max 之间的差值就是抖动。与较高的平均延迟相比,抖动对交互式操作的影响更大,因为持续不变的延迟比不可预测的延迟更容易隐藏。需要注意:ping 使用 ICMP(Internet Control Message Protocol),许多路由器会限制 ICMP 的速率或直接丢弃 ICMP,因此 ping 失败不能证明服务器不可达。
接下来查看具体路径。
mtr --report --report-cycles 50 vps.example.commtr 将 ping 和 traceroute 结合起来,并向每一跳发送 50 个探测包。只查看最后一行,因为那一跳才是用户实际通信的目标。中间某一跳显示丢包,但最后一行没有丢包,说明该路由器限制了自身响应的速率,而不是您的路径存在丢包。如果某一跳的耗时较高,但后续各跳正常,情况也一样。中间列中的主机名可以帮助您确定所在城市。
如果某处过滤了 ICMP,导致 mtr 输出一整列星号,可以使用 TCP 连接到 443 端口,向路径发送一个无法忽略的请求:
sudo traceroute -T -p 443 vps.example.com最后,测量浏览器实际经历的过程。这是最终可以解决争议的数值。
curl -w 'dns=%{time_namelookup} tcp=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' \
-o /dev/null -s https://vps.example.com/所有值均以秒为单位,并且都从命令开始时计时,因此应将它们作为差值读取。time_connect 减去 time_namelookup 是 TCP 握手时间,通常接近一个 R。time_appconnect 减去 time_connect 是在此基础上的 TLS 握手时间。time_starttransfer 减去 time_appconnect 是又一个往返时间,加上服务器处理请求所用的时间。注意最后一个差值:如果它远大于其他差值,说明较慢的是应用本身,将应用迁移到其他国家也无法解决问题。
五分钟完成的购买前检查
从用户所在的计算机或网络运行每条命令,不要从您的办公室运行。将 curl 这一行重复执行 5 次,因为第一次运行需要进行名称解析,后续运行则不需要。
for i in 1 2 3 4 5; do
curl -w 'tcp=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer}\n' \
-o /dev/null -s https://vps.example.com/
done将输出保存到文本文件中,并记录运行测试的日期和城市。一周后比较两个服务商时,您将获得两组以相同方式采集的数值,而不是两种主观印象。
如何从用户所在位置进行测量?
您的笔记本电脑不等于用户所在的位置,许多位置决策都因此出现错误。以下有 4 种获取真实测量结果的方法,按成本从低到高排列。
- 请目标国家的一名真实用户运行
curl命令,并将输出发送给您。这是您能获得的最真实测量结果,而且不需要任何费用。 - 按小时租用目标地区中最小的 VPS,从该 VPS 向您的加拿大地址运行
mtr和curl,然后销毁该实例。小型实例运行 1 小时的费用通常很低,而且结果来自该国自己的网络。 - 使用 RIPE Atlas。这是一个由世界各地志愿者托管小型探针组成的公共测量网络。您可以安排从所选国家的探针向自己的服务器执行 ping 或 traceroute,然后逐个探针查看结果。
- 在用户的设备上打开浏览器开发者工具,进入网络选项卡,查看第一个请求的耗时。它会分别显示名称解析、TCP、TLS 以及服务器自身处理请求所用的时间。
请在付款前测试,而不是付款后再测试。许多服务提供商会为每个位置提供 looking glass 页面或测试文件,专门用于此目的。
保留 Canada,减少往返
位置确定后,剩余的优化都来自减少请求次数。
- 尽可能通过一次请求提供页面,而不是使用请求链,让每个请求都等待前一个请求的响应。
- 启用 HTTP/2 并保持连接,以便每次访问只需执行一次握手,而不是每个请求都执行一次。
- 优先使用 TLS 1.3。它只需一次握手往返,而 TLS 1.2 需要两次。保持会话恢复启用,但要注意,在 TLS 1.3 下,恢复的连接仍需这一次往返。只有 TLS 1.3 early data(0-RTT)可以省去这次往返;nginx 默认随
ssl_early_data off提供,因为攻击者可以重放 early data。因此,只应对可安全重复的请求启用它。 - 将静态文件放在内容分发网络(CDN)后面,并在 Latin America 配置存在点(PoP),这样图片和脚本可在本地提供,而应用仍保留在 Canada。
- 修复 N+1 查询模式。这种模式会针对已经获取的每一行额外执行一次查询。每减少一个查询,就减少一次 R。
- 在用户附近缓存开销较高的响应,即使只缓存几秒也有帮助。
- 对长距离路径上的交互式管理,使用
mosh,而不是普通的ssh。
这些改动优化的是倍数,而不是距离。在长距离路径上,倍数通常更大。
费用及计费货币
面向加拿大和美国提供服务的平台会以美元或加元计费,截至 2026 年 8 月,这仍是普遍做法。如果您的预算以墨西哥比索、哥伦比亚比索、智利比索、阿根廷比索或欧元计算,请预留两项额外成本。您的发卡机构会在每笔扣款中加入货币转换价差,部分国家还会对外币消费征收本国税费,因此在确定月度预算前,请先确认当地规定。
另一个影响也容易被忽略。美元固定价格并不意味着以您的货币计价的价格固定,因此汇率变动后,同一套餐某个月的费用可能明显高于上个月。提前支付一年的费用可以锁定美元价格,但不能锁定比索价格。以加元计费的套餐也存在同样的汇率风险,只是方向不同,因为加元不仅会相对美元波动,也会相对您的货币波动。
FAQ
加拿大 VPS 对墨西哥或哥伦比亚用户来说太慢吗?
对于大多数网站和 API,不会。延迟会在每次交互中累积,因此只需少量请求即可完成响应的页面通常仍然流畅;而需要依次发送二十个请求的页面则要等待二十次往返,无论用户身处何地,只要距离较远都会感觉缓慢。使用 ping -c 20 和 mtr --report --report-cycles 50 测量从用户到服务商测试地址的实际路径,然后统计页面实际发出了多少个请求。如果请求数量较多,减少请求通常比更换国家更有效。
面向拉丁美洲用户,应选择加拿大还是美国?
单从网络条件看,美国机房通常离拉丁美洲用户更近。例如,墨西哥用户可选择 Dallas,南美洲北部用户可选择 New York。这是因为更多互联互通发生在美国。若您的要求是满足司法管辖区,而不是追求速度,或者客户和供应商已经在加拿大,加拿大更合适。决定前应从用户所在地区分别测量两地,因为结果取决于对等互联协议,不能只看地图。
如果用户在西班牙,应在哪里托管?
选择欧洲。若服务商提供 Madrid,那里通常是最近的选择;Frankfurt 或 Amsterdam 通常是第二选择,因为这两个城市的网络互联非常密集,而且从西班牙经陆路传输的距离较短。加拿大 VPS 会让西班牙用户的请求跨越大西洋,传输方向也不理想,从而增加每个请求的延迟,却没有带来任何好处;除非您有明确的法律或商业理由,必须将数据存放在加拿大。
如何从不在场的国家测试延迟?
您不需要签订合同。请当地的真实用户运行 curl -w 'tcp=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer}\n' -o /dev/null -s https://your-host/,并将结果行发送给您。在该地区按小时租用一台 VPS,从那里进行测量,然后销毁 VPS。也可以使用位于该国的 RIPE Atlas 探针,定期执行 ping 和 traceroute 测量。或者查看用户自己计算机上浏览器开发者工具的网络选项卡。每次结果都应记录城市和日期,因为路由会发生变化。
在加拿大托管是否能让我的数据不受美国司法管辖?
在加拿大托管意味着物理服务器位于加拿大,但这只是起点,并不能构成保证。关键在于控制该服务器的公司、其母公司的注册地,以及备份和监控数据复制到哪里。由美国企业持有的公司运营的加拿大数据中心,与不属于美国企业的加拿大数据中心,所处的法律地位不同。在向客户承诺任何司法管辖范围之前,应以书面形式确认公司结构和备份位置。