【问题标题】:Downloading files from S3 much faster on local host than from EC2 instance?在本地主机上从 S3 下载文件比从 EC2 实例下载文件快得多?
【发布时间】:2016-05-20 14:50:15
【问题描述】:

我正在运行一个相当简单的 Python 脚本,它使用多处理和请求从 S3 下载文件。当我在本地运行此脚本时,它非常快(2.5 分钟内 5k 图像)。当我在 EC2 实例(g2.2xlarge,因为我需要使用 GPU 实例)上运行相同的脚本时,它非常慢(大约慢 10 倍),即使我使用优化的 EBS 并给它 3600 IOPs .在这一点上,我不知道我应该检查什么。任何建议将不胜感激。

脚本是从这里修改的,将 urllib2 替换为 requests:

https://github.com/BVLC/caffe/blob/master/examples/finetune_flickr_style/assemble_data.py

【问题讨论】:

  • 也许在这里发布脚本?磁盘 I/O 可能是一个重要因素。您是否尝试将文件下载到os.devnull 以消除本地磁盘 I/O 的影响?您的本地环境到您的 S3 目标与您的 EC2 实例之间的延迟有什么区别?你能从两者都 ping 通吗?
  • 您的 S3 存储桶在哪个区域,您的 EC2 实例在哪个区域?
  • 我想通了。这个问题很可能是我被 S3 限制了。当我从 requests 切换到 boto3 时,它现在比我的本地机器还要快。

标签: python amazon-web-services amazon-s3 amazon-ec2


【解决方案1】:

此问题很可能与 CDN 限制我从 EC2 实例发出的 http 请求有关。当我切换到使用 boto 时,速度变得与我在本地执行的速度相当。

希望这可以帮助别人不要像我一样浪费时间!如有疑问,只需使用 boto。

【讨论】:

  • S3 不会根据您用来访问它的内容来限制请求。
  • @Michael-sqlbot 你有其他解释吗?
  • 不是真的,但是 S3 以某种方式更喜欢由一个库而不是另一个库访问的建议是不合理的猜测。进出 S3 只有一种方式,那就是通过 REST API。当 S3 限制请求时(这种情况很少见),它会返回 HTTP 错误 503 Slow Down。它不仅移动得更慢。
  • @Michael-sqlbot 在进行了更多挖掘之后,我们得出的最可能的解释是,节流实际上来自我们的 CDN,而不是 S3。
猜你喜欢
  • 2014-05-20
  • 1970-01-01
  • 2017-04-27
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 2020-08-15
  • 2021-10-24
相关资源
最近更新 更多