我可以做些啥来加快 S3 上传/更新?

Posted

技术标签:

【中文标题】我可以做些啥来加快 S3 上传/更新?【英文标题】:What can I do to speed up S3 uploads/updates?我可以做些什么来加快 S3 上传/更新? 【发布时间】:2014-09-12 16:13:13 【问题描述】:

我今天整天都在尝试将一些小东西上传到 s3。 500 个目录中有大约 20k 个文件,总大小约为 3GB。对于名为 Simple Storage Service 的服务来说,这是绝对合理的。我平均可以以大约 500k/s - 1mb/s(1.8 到 3.6 gb/h 之间)的速度上传到不同的地方。我整天都在尝试将这些文件上传到 s3,我的上传速度肯定很糟糕(想想 100 mb/h 左右)。

我试过了:

s3 Web 控制台,在各种操作系统上具有各种浏览器 boto 使用我编写的各种脚本,并在网上找到(主要是在 SO 上)。

我希望您能帮我诊断以下问题:

拖放到 s3 控制台(只是为了计算 20k 个文件,大约需要一个小时)。为什么?除非我能解决这个问题,否则 Web 控制台对我来说几乎毫无用处。 上传本身非常慢,很少超过 100 k/s。 上传了一整天后,我注意到文件名有一个简单的问题,不想再花一整夜再次上传,我使用了这个脚本:Amazon S3 boto: How do you rename a file in a bucket?,每个人都声称它运行得非常快。它设法每 2-3 秒重命名大约 1 200kb 文件。为什么? 上传后,公开所有文件(使用 Web 控制台)花了大约 4 小时,但仍未完成。

真的很沮丧,一定是我做错了什么。我希望一切都能以大约 10 倍的速度运行,但事实并非如此。我读过如果拆分文件 s3 运行得更快,并且我读过该区域(我在纽约市)非常重要。什么变化会给我最大的上传速度提升?

【问题讨论】:

你应该看看IOPS EBS volumes @alfasin 与 S3 无关。 @carlosdc,您在哪个区域创建了存储桶?此外,美国东北部的主要宽带(以及,嗯,视频)提供商之一对 AWS 流量进行了“无法解释的”限制的长期指控。然而,S3 一点也不慢。 @Michael-sqlbot 我不久前创建了存储桶,它是美国标准的。我的 ISP 是 TWC。 @Michael-sqlbot S3 不是为高吞吐量而设计的。 IOPS EBS 专为密集型 I/O 设计 - 这是 OP 的要求。 【参考方案1】:

也许可以通过更改 AWS 服务器位置

来修复缓慢的上传连接

我刚刚弄清楚,我的问题是什么:上传持续时间(大小 35MB)

俄勒冈州,美国 us-west-2:5-6 分钟 德国法兰克福 eu-central:1 分钟! (这大约是我的最大连接数)

我在维也纳,而不是在美国 -> 检查您的 AWS 服务器位置

【讨论】:

【参考方案2】:

上传本身非常慢

你可以试试Bucket Explorer,在数百个并行队列中上传操作,让上传过程更快。

上传后,公开所有文件(使用网络控制台)花了大约 4 个小时,但仍未完成。

您可以在存储桶上设置策略以公开访问对象。 以下示例策略允许匿名用户访问。

  
  "Id": "ds", 
  "Statement": [ 
  "Action": "s3:GetObject", 
  "Effect": "Allow", 
  "Principal": "AWS": "*", 
  "Resource": [ 
  "arn:aws:s3:::testbucket", 
  "arn:aws:s3:::testbucket/*" 
  ], 
  "Sid": "1" 
 ], 
  "Version": "2008-10-17" 
   

披露:我是 Bucket Explorer 的开发者之一

【讨论】:

firefox 警告我 Bucket Explorer 包含恶意软件(virustotal 也是如此)。

以上是关于我可以做些啥来加快 S3 上传/更新?的主要内容,如果未能解决你的问题,请参考以下文章

我可以做些啥来加快我使用 NBomber 的负载测试? (VS LT 250 RPS 轻松;NBomber 最高 25 RPS)

IBM Mainframe Assembler 程序在添加 COBOL 调用后显示 CPU 时间和运行时间的极端跳跃。为啥?可以做些啥来加快速度?

查询很慢,我可以做些啥来改进?

我可以做些啥来提高 Lua 程序的性能?

我可以做些啥来优化适用于 Postgres 和 MySQL 的 SQL 查询?

GDI +游戏引擎(我可以做些啥来让我的引擎运行得更快?)[重复]