Amazon Web Services S3请求限制

Sau*_*aul 12 request amazon-s3 limit amazon-web-services

我正在使用AWS来运行一些数据处理.我在EC2中有400个spot实例,每个实例有4个进程,所有这些实例都写入S3中的一个桶.我开始得到一个(显然不常见的)错误说:

503:慢下来

有谁知道S3存储桶的实际请求限制是什么?我找不到任何AWS文档.

谢谢!

Jam*_*mes 9

由于临时错误,AWS文档503.它没有反映具体的限制.

根据"使用Amazon S3的最佳实践"部分处理错误(http://aws.amazon.com/articles/1904/):

500系列错误表示请求未成功,但可能会重试.虽然不常见,但这些错误可以作为与服务正常交互的一部分来预期,并且应该使用指数退避算法(理想情况下利用抖动的算法)明确处理.可以在http://en.wikipedia.org/wiki/Truncated_binary_exponential_backoff找到一种这样的算法.

特别是如果您突然开始每秒将数百个PUT执行到一个存储桶中,您可能会发现某些请求会在服务重新分配负载时返回503"Slow Down"错误.与所有500系列错误一样,这些错误应该以指数退避处理.

虽然不太详细,但S3错误响应文档确实包括503 Slow Down(http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html).


Sau*_*aul 9

根据我的阅读,慢下来是一个非常罕见的错误.但是,在发布此问题后,我收到了来自AWS的电子邮件,该电子邮件说我已经将我的LIST请求限制为每秒10个请求,因为我有太多要去特定的存储桶.

我一直在为我正在处理的项目使用自定义排队脚本,该脚本依赖于LIST请求来确定要处理的下一个项目.遇到这个问题后,我切换到了AWS SQS,这比我想象的要简单得多.没有更多的自定义队列,没有更多的LIST请求.

谢谢你的回答!


pre*_*ion 5

为了补充 James 所说的内容,我们已经讨论了一些有关 S3 分区的内部细节,并且可以在将来用来缓解这种情况,因为需要指数退避。

请参阅此处:http://aws.typepad.com/aws/2012/03/amazon-s3-performance-tips-tricks-seattle-hiring-event.html

简而言之,不要存储具有相同前缀的所有内容,否则出现这些错误的可能性更高。找到某种方法使前缀中的第一个字符尽可能随机,以避免 S3 内部分区中出现热点。