海外服务器地区选择:机房到软件源(Docker Hub / PyPI / npm / GitHub)的拉包速度实测

📅 · 海外服务器线路与网络实测 - ChengziCloud

一句话结论

Meta Description: 海外服务器选址被忽略的维度——机房到软件源的拉包速度。

本文要点
  • 引言:选址清单上被忽略的一行
  • 先搞清楚:你的"软件源"其实是一张 CDN 地图
  • 核心实测:同处美西的两台服务器,拉包速度差多少?
  • traceroute 实测:差在哪一段?
  • 反向实测:从美西拉"大陆镜像站",有多慢?
  • 地区 × 软件源:延迟 / 带宽 / 价格综合表
  • IPv6 实测:不是加速手段,但缺了会少一条路
  • 场景推荐矩阵:做什么用 → 选哪个地区 → 推荐哪家

Meta Description: 海外服务器选址被忽略的维度——机房到软件源的拉包速度。实测同处美西的两台服务器:到同一 CDN 边缘的 TTFB 差 3.5 倍、吞吐差 100 倍,瓶颈根本不在软件源。含 CDN 归属实测、traceroute 路径、镜像源配置与场景推荐矩阵。

关键词:海外服务器地区选择、软件源加速、Docker Hub 拉取慢、PyPI 镜像源、npm 镜像源、HuggingFace 下载慢、海外服务器线路对比、机房出口限速、CI 构建提速


一、引言:选址清单上被忽略的一行

过去我们写海外服务器选址,比的都是"延迟、带宽、价格"三件套:香港到大陆 28–45ms、日本 35–60ms、新加坡 40–70ms、美西 140–180ms,带宽单价香港是美西的 5–10 倍,等等。这些指标决定的是用户访问你的站点快不快。

但有一类服务器,它的主要工作不是"被人访问",而是自己不停地往外拉东西:

  • 跑 CI/CD 的构建机,每次构建都要拉几百 MB 的 npm / pip / Maven 依赖;
  • 部署 Docker 的业务机,docker pull 一次就是几百 MB 镜像层;
  • 跑 AI 推理的机器,第一次启动要下载几 GB 的 Hugging Face 模型权重;
  • 自建镜像站、包缓存(Nexus、Harbor、devpi、verdaccio)的机器,本身就在替别人拉包。

对这类机器,"用户延迟"几乎不重要,"拉包速度"才决定你每天浪费多少分钟。而拉包速度既不等于 ping 值,也不等于商家标称的带宽——它取决于三层:

  1. 源侧:软件源有没有在你机房附近布 CDN 边缘节点;
  2. 机房侧:你的机房到这些 CDN 的 Peering 质量、以及机房给你端口开了多大的口子;
  3. 人侧:你有没有把源换成合适的镜像站。

本文用两台真实服务器做了一组对照实测,结论可能和你的直觉相反:第二层(机房侧)的权重远大于第一层(源侧),而"换个软件源"在很多情况下根本救不了你。


二、先搞清楚:你的"软件源"其实是一张 CDN 地图

在讨论"要不要换源、换哪个源"之前,先看清你每天在连的到底是谁。2026-09-29 我们在实测中把每个软件源的接入 IP、ASN、响应头都抓了一遍:

软件源实测接入 IPASN运营方关键响应头证据
PyPI(pypi.org / files.pythonhosted.org)151.101.192.223、151.101.0.223AS54113Fastlyx-served-by: cache-iad-kiad7000085-IAD, cache-bur-kbur8200053-BUR、x-cache: MISS, HIT, HIT
npm registry104.16.6.34、104.16.7.34AS13335Cloudflarecf-ray: a428cd985c656e82-SJC、cf-cache-status: HIT
Maven Central(repo1.maven.org)104.18.19.12AS13335Cloudflare同上
jsDelivr CDN104.17.207.5AS13335Cloudflare同上
crates.io 静态库167.82.10.137AS54113Fastly—
GitHub(codeload / raw)140.82.113.10、185.199.110.133AS36459GitHub 自建边缘x-github-edge-region: iad
Hugging Face18.67.93.58、34.230.200.86AS16509 / AS14618AWS CloudFront + S3x-hub-cache: HIT
Docker Hub(registry-1.docker.io)13.216.167.171AS14618AWS/v2/ 返回 401 属正常(需先取 token)
Go module proxy142.251.218.113AS15169Google 全球缓存—
阿里云镜像 / npmmirror155.102.176.83、163.181.60.202AS24429阿里云(淘宝)—
清华 TUNA / 中科大 USTC101.6.15.130、202.38.95.110AS4538CERNET 教育网—

这张表解释了三件事:

第一,绝大多数软件源早就"上 CDN"了。 PyPI 与 crates.io 在 Fastly 上,npm / Maven / jsDelivr 在 Cloudflare 上,Hugging Face 在 AWS CloudFront 上,Docker Hub 直接落在 AWS 上。也就是说,"源站离你很远"这个担忧基本不成立——CDN 会把内容推到离你最近的边缘节点。

第二,因此"换个更近的源"能优化的空间比想象中小。 只要你的机房与这些 CDN 边缘的互联是通的,边缘节点的位置就已经帮你把物理距离抹平了。

第三,"ping 软件源"这个动作基本没有意义。 Fastly、Cloudflare、CloudFront 的边缘节点绝大多数不响应 ICMP,ping pypi.org 打出来的要么是超时,要么是任何播地址(anycast)背后一个你不知道在哪的节点。要测就用 TCP 建连时间 + TLS 握手时间 + TTFB(首字节时间),这三个数才是"拉包"真实的成本构成。

三、核心实测:同处美西的两台服务器,拉包速度差多少?

这组实测的设计思路很简单:找两台物理位置几乎一样、但机房与运营商不同的服务器,让它们拉同一批软件源。如果"地区决定一切"成立,两台机器的数字应该差不多;如果数字差很多,那就说明地区之外还有一个更大的变量。

3.1 测试环境

项目节点 A(圣何塞)节点 B(洛杉矶)
地理位置美国加州 圣何塞美国加州 洛杉矶
出口 IP23.106.44.5038.55.134.58
ASN / 归属AS7203 Leaseweb USAAS402169 Uscloud Inc
协议栈IPv4 + IPv6 双栈(v6 可用)仅 IPv4(v6 不可用)
两节点互 ping→ 节点 B:5.45ms(mdev 1.44ms)→ 节点 A:7.62ms(mdev 3.81ms)
两节点互 traceroute13 跳,经 Cogent / Arelion14 跳,经 Arelion / Cogent
测试时间2026-09-29 06:02–06:16 UTC同一时段

关键前提:两台机器之间只有 5–8ms。 也就是说,从"物理距离"这个维度看,它们几乎是同一位置的机器。下面的所有差异,都不能用"离得远"来解释。

3.2 TTFB 实测(首字节时间,单位 ms,两次采样)

软件源(CDN)节点 A 采样1节点 A 采样2节点 B 采样1节点 B 采样2B/A 倍率
npm registry(Cloudflare)6958204243约 3.5×
npm 包文件 tarball(Cloudflare)8570228211约 2.8×
jsDelivr(Cloudflare)3612 ⚠76217209约 2.8×
Maven Central(Cloudflare)8567223229约 3.0×
PyPI 索引页(Fastly)7570212231约 3.0×
PyPI JSON API(Fastly)9069240261约 3.1×
crates.io 静态库(Fastly)9182177217约 2.3×
GitHub raw(GitHub 边缘)91163334681约 4.0×
GitHub codeload 打包下载428255864532约 1.9×
Docker Hub /v2/(AWS)247244476460约 1.9×
Docker Hub 认证接口(Cloudflare)150142318304约 2.1×
Hugging Face(CloudFront)1901701018992约 5.5×
Go module proxy(Google)96319268287约 1.9×

⚠ jsDelivr 在节点 A 的第一次采样出现 3.61s 的异常值(冷缓存/回源抖动),第二次采样恢复正常(76ms)。异常值如实保留,不作为结论依据——这也提醒我们:单次测速不可信,至少采两轮。

3.3 TLS 握手耗时(这才是"拉包"真正的起步成本)

TCP 建连只占一小部分,真正贵的是握手。下表是 time_appconnect − time_connect(TLS 握手完成耗时):

目标 CDN节点 A(ms)节点 B(ms)差距
Cloudflare 边缘(npm / Maven / jsDelivr)45–65195–243约 4 倍
Fastly 边缘(PyPI / crates.io)58–71166–239约 3 倍
GitHub 边缘(codeload)163–181427–431约 2.4 倍
AWS CloudFront(Hugging Face)79–88625–636约 7.5 倍
AWS(Docker Hub)174–178384–434约 2.3 倍

一次 npm install 会并发建立几十到几百条 TLS 连接、docker pull 每条镜像层都要建连。每条连接多花 150–500ms,一次构建多花几分钟到十几分钟,就是这么来的。

3.4 单流吞吐实测(单位 MB/s)

下载目标(文件大小)A 采样1A 采样2B 采样1B 采样2
npm registry 元数据(15.7MB)133.5175.31.161.14
npm 包 tarball(4.04MB)38.544.51.101.10
jsDelivr 单文件(8.87MB)2.2118.51.151.14
Maven jar(1.85MB)19.724.21.031.04
GitHub codeload(11.3MB)5.7613.41.041.06
GitHub raw 单文件(928KB)6.433.500.840.63
Hugging Face 模型文件(268MB)1.2580.91.050.79
npmmirror(15MB)14.723.21.101.04
阿里云镜像 Ubuntu Release(269KB)0.420.670.230.28

节点 A 的快是可以理解的:圣何塞本身就是 Cloudflare、Fastly 的骨干汇聚点,拉 npm 元数据两次采样都在 130 MB/s 以上,拉 Hugging Face 那个 268MB 的模型文件第二次只用了 3.3 秒(80.9 MB/s)。

真正反常的是节点 B:它到所有软件源的速度都整齐地卡在 1.0–1.16 MB/s。 九行数据、两次采样,没有一个例外。这不像"网络质量差"——网络差是波动的,这是一堵墙。

3.5 决定性实验:三源并发聚合

为了确认这堵墙在哪儿,我们做了一次并发聚合测试:同时从三个不同的 CDN(Cloudflare 的 npm、GitHub 的 codeload、Cloudflare 的 jsDelivr)下载大文件,看总吞吐能不能突破单流上限。

实验项节点 A(圣何塞)节点 B(洛杉矶)
单流 npm tarball51.7 MB/s1.08 MB/s
单流 GitHub codeload13.4 MB/s1.05 MB/s
单流 jsDelivr18.6 MB/s1.15 MB/s
三源并发合计109.3 MB/s(≈874 Mbps)1.23 MB/s(≈9.81 Mbps)
判读并发合计(109.3)> 单流之和(83.7)→ 出口无上限,速度受源侧限制并发合计(1.23)≈ 单流(1.08)→ 出口被硬限速在约 10 Mbps

这张表是全文最重要的一张。它证明了两件事:

  1. 节点 B 拉包慢,跟"软件源"没有半点关系。 三个不同 CDN 的流量加起来,仍然撞在同一个 9.81 Mbps 上——瓶颈在机房给你的那个口子。
  2. "多线程下载能提速"在这种情况下是无效的。 多线程只能提高单条 TCP 连接的利用率,突破不了端口的物理上限。换源、换 CDN、开 100 个并发,都是同一堵墙。

所以:如果你买了一台"10Mbps 端口"的便宜机器来跑 CI,你每天的时间成本会按 1.2 MB/s 结算。 拉一个 1GB 的 Docker 镜像要 13 分钟以上。

四、traceroute 实测:差在哪一段?

只用 TTFB 数字下结论是不够的,我们还要看路径。下面是两个节点到同一个目标的 traceroute(已跳过私有地址段):

节点 A(圣何塞)→ registry.npmjs.org(IPv6):


 1  2605:fe80:2b:107::2      0.42ms
 2  2605:fe80:2100:a116::2   0.39ms
 4  2001:550:2:3::bf:1       1.42ms
 8  2001:550:2:1f::29:2      1.38ms
 9  2400:cb00:4:2::3         1.32ms     ← 进入 Cloudflare 骨干
10  2400:cb00:466:3::        1.76ms

节点 B(洛杉矶)→ registry.npmjs.org(IPv4):


 1  10.0.94.1              0.44ms
 3  192.168.0.64           1.87ms
 5  10.255.254.98          9.56ms      ← 机房内部绕行
 6  137.175.0.38          25.09ms
 7  172.68.188.121         1.80ms     ← 进入 Cloudflare 边缘
 8  172.68.188.155         3.41ms

节点 B(洛杉矶)→ codeload.github.com:


 6  62.115.40.178          4.00ms      ← Arelion AS1299
 8  62.115.139.113        33.62ms
10  62.115.139.32         71.18ms
13  62.115.136.201        76.06ms
14  no reply                          ← 末端不响应

节点 A(圣何塞)→ mirrors.aliyun.com:


 4  38.142.10.249          1.41ms
 6  154.54.168.154         3.22ms      ← 进入 Cogent AS174
 8  154.54.45.161         22.65ms
12  154.54.29.133         57.14ms
14  38.122.18.141         56.88ms      ← 阿里云海外 POP

三条结论:

  1. 节点 B 到 Cloudflare 边缘只有 7–8 跳、"进入边缘"那一刻的往返只有 1.8ms——路径本身并不差。但它的 TTFB 却是 200ms+,TLS 握手 200ms+,吞吐被压在 1 MB/s。路径短、延迟高、吞吐低,三者同时出现,指向的就不是"线路",而是这台机器/这个机房侧的资源分配与端口策略。
  2. 节点 A 到 Cloudflare 的 IPv6 路径 10 跳内完成,全程 1.3–2.1ms 量级——这就是它能跑到 130 MB/s 的原因:它几乎"贴着"边缘节点。
  3. 节点 A 到阿里云镜像走 Cogent,末端 56.9ms——注意这个数字,比它到 Cloudflare 的 2ms 差了 30 倍。下一节解释为什么。

五、反向实测:从美西拉"大陆镜像站",有多慢?

很多人的第一反应是"慢就换国内镜像源"。这个策略在国内机房是对的,但在海外机房可能完全反过来。我们用同一批节点,测了国内主流镜像站:

镜像站运营方 / ASNA 采样1 TTFBA 采样2B 采样1B 采样2实测速度(A / B)
阿里云 mirrors.aliyun.com(PyPI)阿里云 AS24429425ms240ms1856ms968ms124 / 200 KB/s · 31 / 58 KB/s
腾讯云 mirrors.cloud.tencent.com(Ubuntu)腾讯云246ms—272ms—716 KB/s · 546 KB/s
华为云 mirrors.huaweicloud.com(Ubuntu)华为云1476ms—971ms—131 KB/s · 182 KB/s
清华 TUNA(PyPI)CERNET AS45381305ms1167ms1151ms1325ms34 / 38 KB/s · 39 / 37 KB/s
中科大 USTC(PyPI)CERNET AS45381645ms3275ms403 拒绝403 拒绝30 / 17 KB/s · —

同一组实验里,作为对照的 Debian 全局源(Fastly)与 PyPI 官方源,从节点 A 上是 TTFB 74ms / 69ms、速度 1.44 MB/s / 0.74 MB/s。

这里的三个发现比"换源就能提速"重要得多:

发现一:教育网镜像(清华 TUNA、中科大 USTC)对海外机房基本不可用。 TTFB 1.2–3.3s,速度 17–38 KB/s——比官方源慢 40 倍以上。USTC 对洛杉矶节点的两次请求直接返回 HTTP 403(拒绝),圣何塞节点虽然返回 200,但 TTFB 高达 1.6–3.3s。CERNET 的设计目标是服务国内教育网,海外访问属于"顺带能通",从来没有为这个场景优化过。

发现二:"大陆镜像"不等于"都慢",差别在于它有没有海外节点。 腾讯云镜像从两个美西节点测出来 TTFB 246ms / 272ms、速度 546–716 KB/s,是全部国内镜像里唯一"能打"的——因为它有海外 POP(实测接入 IP 43.168.119.137 属腾讯国际段)。阿里云镜像也有海外节点(155.102.x 段),但会被 DNS 解析到国内淘宝段(163.181.x),TTFB 因此在 240ms 与 1856ms 之间大幅波动。同一个域名,解析到哪个 IP,结果差 8 倍。

发现三:只测 ping 会得出完全错误的结论。 这些镜像站的 ping 值和它们的 TTFB/速度之间没有稳定关系,因为瓶颈在应用层(TLS、回源、限流),不在 ICMP。

⚠️ 诚实标注:香港 xtom 镜像(mirrors.xtom.hk)在节点 B 上两次都因 TLS 握手失败(TCP 已建连 183ms 但握手失败)而不可用,节点 A 可用(TTFB 948ms);新加坡 NUS 镜像(mirror.nus.edu.sg)在两个节点上域名均不可达。两条都不计入统计。

六、地区 × 软件源:延迟 / 带宽 / 价格综合表

把上面的实测与本站一贯的地区参考值放在一起,就得到选址时真正该看的那张表:

地区中国大陆访问延迟参考主流 CDN 边缘覆盖国际带宽单价2核4G 月价参考出网流量参考价
香港28–45msCloudflare / Fastly / CloudFront 均有 HKG$5–10 / Mbps$25–50约 $0.12 / GB
日本(东京 / 大阪)35–60ms东京 POP 齐全$1–3 / Mbps$15–30约 $0.13 / GB
新加坡40–70ms新加坡 POP 齐全$2–4 / Mbps$15–30约 $0.081 / GB
美国西岸(洛杉矶 / 圣何塞)140–180msPOP 密度最高,离源站最近$0.5–1 / Mbps$10–20约 $0.077–0.09 / GB
美国东岸(弗吉尼亚等)— 参考值未在本站实测序列内us-east-1 是大量源站所在地$0.5–1 / Mbps$10–20约 $0.075 / GB
德国法兰克福— 参考值未在本站实测序列内POP 齐全$1–2 / Mbps$12–25约 $0.077 / GB

关于这张表,有三点必须说清楚:

1. 出网流量价格与带宽包价格是两种商品,别混用。 上表最后一列是按流量计费时的出网单价;拉包(入方向)在主流云厂商那里通常免费,真正的流量成本只发生在你把东西发出去的时候(自建镜像站对外分发、CI 产物上传)。所以"自建镜像站"的成本模型是"便宜的出网 + 便宜的带宽",这也是它该放美西的原因。

2. 带宽单价便宜不等于端口给得大。 本文的节点 B 就是活例子:它的带宽单价属于"美西便宜档",但实际出口被压在 9.81 Mbps。便宜的美西机器里,端口超售非常普遍——下单前一定要看"端口上限",而不是只看流量单价。

3. "延迟低"和"拉包快"是两个指标。 香港到大陆 28–45ms 是给用户访问用的;而拉包看的是你到 CDN 边缘的 TTFB 与端口吞吐。一台香港机器的端口如果只有 5Mbps,拉包照样比 200Mbps 的美西机器慢。

七、IPv6 实测:不是加速手段,但缺了会少一条路

很多人听说"IPv6 拉包更快",我们在两个节点上做了 A/B 对照(同一目标,分别强制走 IPv4 与 IPv6):

目标节点 A IPv4节点 A IPv6节点 B IPv4节点 B IPv6
registry.npmjs.org200 / 61ms / 154.6 MB/s200 / 67ms / 130.8 MB/s200 / 252ms / 1.16 MB/s连接失败
pypi.org 索引200 / 81ms200 / 76ms200 / 268ms连接失败
Maven Central jar200 / 77ms200 / 78ms200 / 261ms连接失败
codeload.github.com200 / 584ms连接失败(GitHub 该端点无 v6)200 / 698ms连接失败
Hugging Face config.json200 / 178ms200 / 162ms200 / 1001ms连接失败
Docker Hub /v2/401 / 248ms401 / 244ms401 / 460ms连接失败

结论很清楚:

IPv6 本身不带来速度优势。 在节点 A 上,v6 与 v4 的 TTFB 差异全在 ±10ms 以内(npm 67 vs 61、PyPI 76 vs 81、Hugging Face 162 vs 178),属于测量噪声。真正让节点 A 快的是它的机房位置与出口质量,不是协议版本。

但"没有 IPv6"会实打实地少一条路。 节点 B 上所有 IPv6 请求全部连接失败——不是慢,是不可用。后果有两个:一是你失去了一整条独立的转发路径(当 IPv4 路径拥塞或被针对时没有备选);二是凡是"只在 IPv6 上有更优边缘"的服务,你直接拿不到。下单前 curl -6 -I https://www.google.com 一条命令就能验证,别省略这一步。

八、场景推荐矩阵:做什么用 → 选哪个地区 → 推荐哪家

这张表是全文的行动清单。判断逻辑只有一条:先看这台机器主要在干什么,再看它跟"源"和"人"谁更近。

场景推荐地区推荐机房 / 商家镜像源配置理由
大陆团队日常开发机 + 需要低延迟 SSH香港 / 日本阿里云国际香港区、AWS Lightsail 东京、UCloud全部指向国内镜像(阿里云 / 腾讯云 / 清华)大陆访问 28–60ms;国内镜像 TTFB 0.25–0.3s,够用
全量 CI/CD 构建机(拉 Docker 镜像 + npm / pip 依赖)美国西岸Vultr、BandwagonHost、AWS us-west-2、DigitalOcean用官方源即可,不要配国内镜像CDN 边缘同城、出口带宽便宜、并发不受限
自建镜像站 / 包缓存(Nexus、Artifactory、Harbor、devpi、verdaccio)美国西岸AWS us-west-2、Vultr、Hetzner上游接官方源,对外走自有 CDN带宽单价最低($0.5–1/Mbps、约 $0.077/GB 出网),离上游源站最近
AI 训练 / 推理,需拉 Hugging Face 模型美国东岸(us-east-1)或西岸AWS、Vultr国内环境走 hf-mirror 类镜像实测 HF 边缘在 AWS 上,节点 A 拉 268MB 模型仅 3.3 秒
跨境电商 / 面向东南亚用户新加坡AWS ap-southeast-1、阿里云国际新加坡区、Vultr、DigitalOcean官方源东南亚访问 40–70ms,新加坡本身是区域 CDN 枢纽
需要同时拉"国内源"和"官方源"香港阿里云国际香港区、UCloud双源并存(国内镜像 + 官方源)到两边都不算远,是唯一的"中间位"
面向欧美用户的业务站美国西岸 / 法兰克福Vultr、Hetzner、DigitalOcean官方源用户与源站同区域,两边都快
预算极低($3–8/月)的学习 / 测试机美国西岸Vultr、BandwagonHost 入门款官方源便宜档普遍限端口,但只做轻量任务影响有限

⚠️ 三条配套提醒:

  • 构建机的端口比 CPU 重要。 2 核 4G 配 10Mbps 端口,会比 1 核 2G 配 1Gbps 端口慢得多。买之前先确认端口上限,本文的并发实验已经给出判据:拉三个不同源的总速 ≈ 单流速度,就是被限速了。
  • 别在海外机器上配国内教育网镜像。 清华 / 中科大这类 CERNET 镜像对海外机房是负优化(实测慢 40 倍,甚至 403)。
  • 自建镜像站要算的是"出网 + 带宽",不是"买多大盘"。 560GB 的 npm 缓存重复下载一次,在 10Mbps 端口上就是 13 小时。

九、镜像源配置速查(按机房地区选)

配置思路:机房在哪儿,决定你用哪一层源。 下面是按机房地区分的对照表,以及 Docker 的最小可用配置。

工具国内机房配置海外机房配置
pippip config set global.index-url https://mirrors.aliyun.com/pypi/simple/pip config set global.index-url https://pypi.org/simple/
npmnpm config set registry https://registry.npmmirror.comnpm config set registry https://registry.npmjs.org
Gogo env -w GOPROXY=https://goproxy.cn,directgo env -w GOPROXY=https://proxy.golang.org,direct
Mavensettings.xml 的 <mirror> 指向 https://maven.aliyun.com/repository/public保留 Maven Central https://repo1.maven.org/maven2/
Ubuntu / Debiansources.list 换 mirrors.aliyun.com 或 mirrors.cloud.tencent.com保留 archive.ubuntu.com / deb.debian.org
Dockerdaemon.json 的 registry-mirrors 填你的加速地址不配镜像,直连 registry-1.docker.io

Docker 的 daemon.json 写法(改完执行 systemctl restart docker):


{
  "registry-mirrors": ["https://<你的加速地址>"]
}

注意最后两行:海外机房一律保留官方源。 实测从美西拉 Debian 官方源 TTFB 仅 74ms、速度 1.44 MB/s,比换成任何国内镜像都快。

十、五个常见误区(都有实测反证)

误区一:ping 低就等于拉包快。 本文两个节点互 ping 只有 5–8ms,差 1ms 量级;但它们拉同一个 npm 包的 TTFB 差 3.5 倍、吞吐差 100 倍。ping 测的是 ICMP 控制面,拉包走的是 TCP + TLS + 应用层,两者可以完全脱钩。

误区二:慢就换个软件源。 最简单的反证:节点 B 同时从三个不同 CDN 拉包,合计 9.81 Mbps,和它单流拉一个源几乎一样。当瓶颈在端口时,换源是无效动作。先判断瓶颈在不在自己这边,再决定要不要换源。

误区三:大陆镜像站一定比官方源快。 在国内机房成立,在海外机房不成立。实测从美西拉清华 TUNA 是 34–38 KB/s,拉 PyPI 官方(Fastly)是 740 KB/s–1.44 MB/s,差 20–40 倍。而海外节点拉腾讯云镜像反而有 546–716 KB/s——因为镜像站有没有海外 POP,比它"是不是中国的"重要得多。

误区四:IPv6 一定会更快。 实测 v6 与 v4 的 TTFB 差异在 ±10ms 内,属噪声。IPv6 的价值是"多一条路",不是"更快一条路"。但反过来,如果机房根本不给 IPv6,你就少了一条路——本文节点 B 的所有 IPv6 请求全部连接失败。

误区五:拉包会烧掉出网流量费。 主流云厂商的入方向流量通常不计费,拉包本身不花钱。真正计费的是出向(自建镜像站对外分发、CI 产物上传、镜像同步)。所以"为了省钱而把镜像站塞在小端口机器上"是算反了账——省下的是零,付出的是时间。

十一、常见问题 FAQ

Q1:我的服务器在国外,docker pull 特别慢,换地区还是换源? 先做一次并发实验:同时从两个不同源下载大文件,看总速是否 ≈ 单流。是 → 端口被限速,换源无效,只能换机房或升端口;不是 → 再考虑换源。

Q2:怎么一条命令判断我的端口是不是被限速了? 连续下三个不同源的大文件,间隔执行并记录速度;再用并发方式重跑一遍。如果并发总速和单流速度基本相同,就是端口上限;如果并发总速明显更高,说明出口是你真正的带宽。

Q3:为什么同一座城市的两台服务器能差 100 倍? 因为"地区"只是选址的第一层。第二层是机房的 Peering 质量与端口策略,第三层是你买的那个套餐给了多大的口子。本文的节点 B 到 Cloudflare 边缘的路径只有 7–8 跳、进入边缘的往返仅 1.8ms,路径一点都不差,但 TTFB 200ms+、吞吐 1.2 MB/s——问题在机房侧的资源分配。

Q4:香港机房离大陆近,是不是拉包最快? 不一定。香港的优势是"大陆用户访问延迟低(28–45ms)"。但如果你的机器只是拿来跑构建,香港的国际带宽单价是美西的 5–10 倍,而拉包看的是端口 + 到 CDN 边缘的 TTFB。给用户看 → 香港;给机器自己拉包 → 美西。

Q5:自建镜像站/Nexus/Harbor 该放哪儿? 美国西岸。理由是三个"最":出网流量最便宜(约 $0.077/GB)、带宽单价最低($0.5–1/Mbps)、离上游源站(Fastly / Cloudflare / AWS 的源区)最近。放香港会在出网流量上被打穿预算。

Q6:为什么我在海外机器上拉清华 TUNA 那么慢? CERNET(AS4538)的互联设计目标是国内教育网,海外访问属于"顺带能通"。实测 TTFB 1.2–3.3s、速度 17–38 KB/s,中科大还对海外 IP 直接返回 403。海外机器请用官方源或有海外 POP 的商业镜像。

Q7:拉 Hugging Face 模型应该选哪个地区? HF 的下载走 AWS CloudFront + S3。实测节点 A(美西)拉 268MB 模型文件 3.3 秒(80.9 MB/s),TTFB 170ms;节点 B(同为美西但出口受限)TTFB 992ms、速度 0.79 MB/s。地区选美西或美东,但真正拉开差距的还是端口。 国内机房拉 HF 建议用专门的镜像服务。

Q8:CI 构建机和业务机需要选同一个地区吗? 不需要,而且常常不该同。业务机跟着用户选(离用户近),构建机跟着软件源选(美西,带宽便宜)。两者通过制品仓库(registry / 对象存储)衔接即可。

Q9:端口只有 10Mbps,买 CDN 或加钱升端口哪个划算? 看你拉的是什么。静态依赖包(npm / pip / Maven)有 CDN 就能分发,走 CDN 划算;Docker 镜像层与模型权重这类"必须落到本机磁盘"的,CDN 帮不上忙,只能升端口。

Q10:测速到底该测什么? 抛弃 ping。测三个数:TCP 建连时间、TLS 握手时间(time_appconnect − time_connect)、TTFB(time_starttransfer),再加上并发聚合速度。一轮不够,至少采两轮——本文 jsDelivr 的第一次采样就出现过 3.61s 的异常值。

十二、总结与推荐

把本文的结论压成四句话:

  1. 软件源早就 CDN 化了(PyPI/crates 在 Fastly、npm/Maven 在 Cloudflare、HF 在 AWS CloudFront、Docker Hub 在 AWS),所以"离源站太远"通常不是问题,换源能优化的空间比想象中小。
  2. 真正决定拉包速度的是机房侧的端口与 Peering。 两台同处美西、互相只差 5–8ms 的机器,到同一个 CDN 的 TTFB 差 3.5 倍、吞吐差 100 倍;并发三源聚合仍撞在 9.81 Mbps 上——这堵墙只有换机房能拆。
  3. 镜像源要按机房位置配,不要按习惯配。 国内机房用阿里云/腾讯云镜像,海外机房保留官方源,千万别在海外机器上配教育网镜像;而"大陆镜像"里腾讯云这类有海外 POP 的反而可用。
  4. 选地区之前先问一句:这台机器是要"给人看",还是"给机器拉包"? 前者按大陆延迟选(香港 / 日本 / 新加坡),后者按端口价格与源侧距离选(美国西岸),而无论选哪个,下单前都要确认端口上限和 IPv6 可用性。

需要一台"拉包不堵"的海外服务器?香港 / 日本 / 新加坡 / 美国西岸等区域、端口与线路可查、可先测后买。

🚀 需要海外服务器? 通过 6.chengzicloud.cloud 购买,覆盖香港/新加坡/日本/美国等全球区域,测试后满意再付款,30天无理由退款保障。

延伸阅读:

本文测试数据采集于2026年9月29日(测试节点:美国西海岸圣何塞 AS7203 与洛杉矶 AS402169 两台服务器,同一时段两次采样),软件源接入 IP/ASN 与 CDN 归属均为当日实测;具体延迟与下载速度可能因网络环境、测试时间和运营商不同而有所差异,文中"中国大陆访问延迟参考"为本站一贯参考值而非本节点实测。建议购买前进行48小时免费测试,并自行复测端口上限与 IPv6 可用性。

本文由 6.chengzicloud.cloud 提供,点击访问首页了解更多