AWS DynamoDB限制写请求处理

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

我有一个表在指定的时间限制写请求。我想更多地了解AWS-SDK如何处理它们。

根据我目前的理解,DynamoDB会向我的Lambda返回一个错误。这就是我在DynamoDB表指标中会出现用户错误的原因。但是,AWS-SDK具有错误处理和重试策略,这有助于我重试并将受限制的请求写回表中。这是对的吗?

amazon-web-services aws-lambda amazon-dynamodb
2个回答
2
投票

每次您的应用程序发送超过您容量的请求时,您都会收到Dynamo的ProvisionedThroughputExceededException消息。但是,您的SDK会为您处理此问题并重试。默认的Dynamo重试时间从50ms开始,默认的重试次数为10,默认情况下,退避是指数式的。

这意味着您将在以下位置重试:

  1. 50毫秒
  2. 100毫秒
  3. 200毫秒
  4. 400毫秒
  5. 800毫秒
  6. 1.6秒
  7. 3.2S
  8. 6.4s
  9. 12.8S
  10. 25.6s

如果在第10次重试后您的请求仍然没有成功,SDK会将ProvisionedThroughputExceededException传递回您的应用程序,您可以按照自己喜欢的方式处理它。

请注意,您可以更改SDK的默认重试行为。例如

new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});

这意味着你重试13次,初始延迟为200ms。这将使您的请求总共需要819.2秒而不是25.6秒。


0
投票

如果许多写入请求进入您的dynamoDB表并且配置的写入容量较小,则写入请求它们DynamoDB会限制您的请求。

如果您实现重试策略并将其用于写入失败,则此写入也可能会受到限制,因为您已经收到大量写入请求。此重试策略将为您的dynamoDB增加额外负载。

解决方案是使用DynamoDB On-demand mode

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