Amazon Web Services S3 请求限制

问题描述 投票:0回答:4

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

503:慢点

有谁知道S3存储桶的实际请求限制是多少?我找不到任何有关它的 AWS 文档。

谢谢!

amazon-web-services amazon-s3 request limit
4个回答
12
投票

AWS 将 503 记录为临时错误的结果。它不反映具体限制。

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

500 系列错误表示请求未成功,但可以重试。尽管不常见,但这些错误是与服务正常交互的一部分,并且应该使用指数退避算法(最好是利用抖动的算法)显式处理。可以在 http://en.wikipedia.org/wiki/Truncated_binary_exponential_backoff 找到一种这样的算法。

特别是如果您突然开始每秒向单个存储桶执行数百个 PUT,您可能会发现某些请求在服务重新分配负载时返回 503“减速”错误。与所有 500 系列错误一样,应使用指数退避来处理这些错误。

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


10
投票

据我所知,“慢下来”是一个非常罕见的错误。然而,在发布这个问题后,我收到一封来自 AWS 的电子邮件,其中表示已将我的 LIST 请求限制为每秒 10 个请求,因为我有太多请求发送到特定存储桶。

我一直在为我正在从事的项目使用自定义排队脚本,该脚本依赖于 LIST 请求来确定下一个要处理的项目。遇到这个问题后,我改用了 AWS SQS,它的实施比我想象的要简单得多。不再有自定义队列,不再有大量的 LIST 请求。

感谢您的回答!


5
投票

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

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

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


0
投票

非常老的问题,但我遇到了类似的问题,如下所示。根据 AWS 文档 和这篇 知识库文章

Amazon S3 可扩展至处理 3,500 个 PUT/POST/DELETE 或 5,500 个 GET 每个前缀每秒的请求数

但请注意,调用率似乎并不是导致 503 速度变慢的唯一条件。这就是我现在面临的情况。我确信我拨打的电话很少,但 S3 不断返回 503。

有人知道数量配额或类似情况吗?

© www.soinside.com 2019 - 2024. All rights reserved.