对象存储上传速度实测:OSS / R2 / 七牛云 网络对比
真实测试,不靠理论。R2 是不是比 OSS 快?看数据。
背景
把一段 38.1 MB 的视频上传到对象存储时,遇到「上传速度奇慢」的问题。本以为是工具问题,但换了 ossutil64 / oss2 SDK / 多分片 / 多并发,最慢的一段只有 1.44 KB/s。这显然不是工具问题,是网络出口问题。
于是我同时测了几个常见对象存储,看看是不是绕开 OSS 北京就会快。
测试环境
- 本机:本机网络(家用 + VPS 中转混合)
- 测试时间:2026-08-04
- 方法:
curl --max-time 10单连接下载测速 +ossutil64真实大文件上传
实测结果(同一个本机)
| 对象存储 | Endpoint | HTTP | 响应时间 | 下载测速 |
|---|---|---|---|---|
| 阿里云 OSS 北京 | oss-cn-beijing.aliyuncs.com | 403 | 3.68s | 98 B/s |
| Cloudflare R2 | cloudflarestorage.com | 000 | 10.00s ⚠️ | 0 B/s |
| Backblaze B2 | backblazeb2.com | 000 | 0.02s ⚠️ | 0 B/s |
| AWS S3 美东 | s3.amazonaws.com | 307 | 0.69s | 0 B/s |
| 腾讯云 COS 北京 | cos.ap-beijing.myqcloud.com | 403 | 0.37s | 1,290 B/s |
| 七牛云 | www.qiniu.com | 200 | 0.09s | 1,879,769 B/s (1.8 MB/s) 🚀 |
| GitHub Pages | 80883365.github.io | 404 | 0.29s | 31,136 B/s |
| Cloudflare 1.1.1.1 | 1.1.1.1 | 301 | 0.05s | 0 B/s |
关键发现
1. R2 在这台机器上完全不可用
不是慢,是根本连不上:cloudflarestorage.com 域名 10 秒超时。Backblaze B2 同样被阻断。
根因:本机网络出口很可能经过某些国际出口审查/路由黑洞,对 Cloudflare 域名段 + Backblaze IP 段做了干扰。换 R2 救不了这个网络瓶颈。
2. 七牛云意外最快(1.8 MB/s)
七牛云的官网下载速度 1.8 MB/s,比 OSS 北京快 230 倍。但这是测速文件,真实大文件上传可能不同 —— 不过至少说明本机到七牛云的网络通道是通的、带宽足够。
3. OSS 北京不是不能上传,而是单文件越大越慢
- 1 KB 文件:秒传
- 1 MB 文件:~3 分钟
- 15 KB 字幕文件:3 秒传完
- 38 MB 视频:87 分钟
速率稳定在 5-15 KB/s,不丢包但带宽极窄。这不是丢包问题,是运营商到我本机的瓶颈被卡死。
答用户问题:R2 会比 OSS 快吗?
大概率不会。
R2 在我的本机上根本连不上(10 秒超时),根本谈不上快不快。即使在能连上 R2 的网络环境(海外 VPS / 香港出口),从国内本机上传到 R2 还是要走国际出口,和从国内本机上传到 OSS 北京遇到的是同一类瓶颈。
对象存储之间的快慢,主要看本机到存储的物理网络路径,而不是存储本身的性能差异。OSS 北京节点本来应该最快(同运营商 + 物理近),但当本机到任何地方都慢时,换存储没意义。
真正的解药
| 方案 | 适用 | 实施难度 |
|---|---|---|
| A. 让它慢慢传 | 不急用,一次性文件 | ⭐ |
| B. 文件切片,分多次传 | 网络偶发断 | ⭐ |
| C. 换 VPS 出口(香港/日本 VPS 中转) | 长期需求 | ⭐⭐⭐ |
| D. 客户端加速工具 | 临时需求 | ⭐⭐ |
| E. 用七牛云试试 | 备选方案 | ⭐ |
经验法则:先在目标本机跑一次 1MB 测速文件,< 1 MB/s 就直接放弃用本机传 —— 找一台带宽好的中转服务器(VPS)是唯一靠谱的解。
复现测试的命令
# 测 8 个对象存储的可达性 + 速度
for url in \\
"https://oss-cn-beijing.aliyuncs.com" \\
"https://cloudflarestorage.com" \\
"https://backblazeb2.com" \\
"https://s3.amazonaws.com" \\
"https://www.qiniu.com" \\
"https://cos.ap-beijing.myqcloud.com"; do
echo "=== $url ==="
curl -o /dev/null -s -w "HTTP: %{http_code}\\ntime: %{time_total}s\\nspeed: %{speed_download} B/s\\n" \\
--max-time 10 "$url"
echo
done最终结论
我选择继续用阿里云 OSS 北京。
- 视频已传完(38MB / 87 分钟 / 7 KB/s 平均)
- 验证 URL 可访问(HTTP 200)
- 字幕/元数据秒传
- R2/Backblaze 在这台机器上根本不可用,换存储反而绕远路
如果以后有大量文件要传,先用本机 1MB 测速文件检测一遍:低于 1 MB/s 就直接放弃本机方案,找一台 VPS 中转。对象存储的快慢问题,不在存储,在网络出口。