为什么上传到 S3 这么慢?

为什么上传到 S3 这么慢?

我正在使用s3cmd上传到 S3:

# s3cmd put 1gb.bin s3://my-bucket/1gb.bin
1gb.bin -> s3://my-bucket/1gb.bin  [1 of 1]
  366706688 of 1073741824    34% in  371s   963.22 kB/s

我正在从 Linode 上传,根据支持,它的传出带宽上限为 50 Mb/s(大约 6 MB/s)。

为什么我上传到 S3 的速度这么慢?我该如何提高上传速度?


更新:

根据iftop(密码进行的任何压缩都不是因素),通过 SCP 将同一个文件上传到 m1.medium EC2 实例 (从我的 Linode 到实例的 EBS 驱动器的 SCP) 可获得大约 44 Mb/s 的速度。


跟踪路由: 这是到其上传到的服务器的跟踪路由(根据tcpdump)。

#跟踪路由 s3-1-w.amazonaws.com。
跟踪路由至 s3-1-w.amazonaws.com。(72.21.194.32),最多 30 个跳数,60 字节数据包
 1 207.99.1.13 (207.99.1.13) 0.635毫秒 0.743毫秒 0.723毫秒
 2 207.99.53.41 (207.99.53.41) 0.683毫秒 0.865毫秒 0.915毫秒
 3 vlan801.tbr1.mmu.nac.net (209.123.10.9) 0.397毫秒 0.541毫秒 0.527毫秒
 4 0.e1-1.tbr1.tl9.nac.net (209.123.10.102) 1.400毫秒 1.481毫秒 1.508毫秒
 5 0.gi-0-0-0.pr1.tl9.nac.net (209.123.11.62) 1.602毫秒 1.677毫秒 1.699毫秒
 6 equinix02-iad2.amazon.com (206.223.115.35) 9.393 毫秒 8.925 毫秒 8.900 毫秒
 7 72.21.220.41 (72.21.220.41) 32.610 毫秒 9.812 毫秒 9.789 毫秒
 8 72.21.222.141 (72.21.222.141) 9.519 毫秒 9.439 毫秒 9.443 毫秒
 9 72.21.218.3 (72.21.218.3) 10.245 毫秒 10.202 毫秒 10.154 毫秒
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
二十 * * *
21 * * *
22 * * *
23 * * *
24 * * *
二十五 * * *
二十六 * * *
二十七 * * *
二十八 * * *
二十九 * * *
三十 * * *

延迟看起来很合理,至少直到服务器停止响应 ping 请求为止。

答案1

仅仅因为您可以达到 50mbps 并不意味着您将始终获得 50mbps;到 S3 的网络路径以及延迟也很重要。

如果您能够使用分段上传,您将能够将文件分成多个部分并使用多个线程上传,从而可能提高上传速度。

答案2

以防万一有人偶然发现这一点......

我遇到一个问题,从 ec2 实例上传到 s3 存储桶的速度非常慢,原来原因很简单,就是存储桶的区域!我使用的是北加州的 ec2 实例,当存储桶按照美国标准创建时,传输速度非常慢,将存储桶设置为北加州后,速度就快了很多。

答案3

我在论坛上看到过许多关于使用各种客户端(比如免费命令行工具(顺便说一下,用 Python 编写的)和商业工具)上传到 S3 速度慢的帖子。

虽然我没有确凿的证据,但切换 S3 客户端(例如 Cloud Berry Explorer)可能会解决您的问题。试试看!:)

相关内容