我有一个表,该表在指定时间限制了写请求。我想了解更多有关AWS-SDK如何处理它们的信息。
就我目前的理解而言,DynamoDB将向我的Lambda返回一个错误。这就是为什么我在DynamoDB表指标中会出现用户错误的原因。但是,AWS-SDK具有错误处理和重试策略,可帮助我重试并将受限制的请求写回到表中。正确吗?
答案 0 :(得分:2)
每当您的应用程序发送的请求超出您的能力时,您就会收到Dynamo的ProvisionedThroughputExceededException
消息。但是,您的SDK会为您处理并重试。 Dynamo的默认重试时间开始于50ms,默认重试次数为10,默认情况下,补偿是指数级的。
这意味着您可以在以下位置重试
如果在第10次重试后您的请求仍未成功,则SDK会将ProvisionedThroughputExceededException
传递回您的应用程序,您可以根据需要进行处理。
请注意,您可以更改SDK的默认重试行为。例如
new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});
这意味着您重试13次,初始延迟为200ms。这将使您的请求总共需要819.2s来完成,而不是25.6s。
答案 1 :(得分:0)
如果要向dynamoDB表发送大量写入请求,并且预配置的写入容量小于DynamoDB限制您的请求的写入请求。
如果您实施重试策略并将其用于失败的写入,则由于您已经收到许多写入请求,因此该写入也可能会受到限制。 此重试策略将为您的dynamoDB增加额外的负载。
解决方案是使用DynamoDB On-demand mode。