我正在使用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)可能会解决您的问题。试试看!:)