【问题标题】:S3 SlowDown: Please reduce your request rate exceptionS3 SlowDown:请降低您的请求率异常
【发布时间】:2017-10-17 19:20:08
【问题描述】:

我有一个每秒向 S3 发送 10k PUT 请求的服务。 S3 能够处理这些负载几分钟,但之后开始抛出 SlowDown 异常。它使我的服务减慢到不可接受的速度。

我已阅读 this 并实施了建议的最佳实践。以下是前缀的格式:bucket-name/[First four of UUID]-[YYYYmmddhhiiss]/[random UUID]/[random UUID].json。该方法虽然没有奏效。

知道如何克服这个错误吗?谢谢! P.S:我已向 AWS 支持中心请求提高 PUT 限制。他们建议了上述没有用的步骤。

【问题讨论】:

  • 每秒 10K PUT 请求,连续不断,每月花费约 129,600.00 美元...那么,对于如此大量的流量,您的用例是什么?
  • @michael-sqlbot 工作流程很简单。每个请求都会向 S3 创建 PUT 请求。每秒的请求数约为 10k。我们将转移到批处理系统,这样我们就可以减少 PUT 请求。
  • 您每秒能够成功发出多少个请求?这个过程持续多长时间?它显然不是运行 24 × 7 × 365,这是“秒”所暗示的。
  • 10k RPS 是生产中每秒的预期请求数。它可能不会一直保持每秒 10k 个请求,但会在这个范围内。回复:您能够成功提出多少请求很难跟踪该指标。我会找到一种方法来跟踪它。

标签: amazon-web-services amazon-s3


【解决方案1】:

S3 是分布式的,您需要确保不创建热点。您可以通过确保您的对象键是真正随机的来避免这种情况。

因此,将 [随机 UUID] 移动到对象键的第一部分。如果您没有生成真正随机的 UUID(即听起来每个对象的前 4 个字符可能相似),请尝试反转 UUID。

更多提示可以找到here

【讨论】:

  • 还是不行。我将使用批处理系统来减少 S3 Put 请求。不过感谢您的链接,这非常有用。
  • 如果您的请求速度达到 10k/秒,不妨考虑将该负载推入队列 (SQS),然后通过处理节点分配负载。
  • 这将解决问题!但不幸的是,在工作流程中添加另一个组件不是一种选择。
  • 请注意,自 2018 年以来,随机前缀发生了变化。 aws.amazon.com/about-aws/whats-new/2018/07/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多