我如何知道DynamoDB限制请求成功执行的频率?

时间:2018-11-02 21:45:55

标签: amazon-dynamodb aws-sdk

当诸如dynamoClient.update(params)之类的请求受到限制时,我的理解是SDK会自动尝试多次重试,然后仅在所有重试均失败的情况下,调用才会失败。如果其中之一成功,则呼叫成功。

我的问题与CloudWatch报告受限制的请求有关。如果请求最初失败,但其中一个退休成功,则该请求是否报告为限制请求?还是仅在所有重试均失败后才报告为已限制?

在查看系统行为时,我真正想了解的是重试发生的频率以及它们最终是失败还是成功。当我看到报告限制了50个请求时,这是否意味着所有50个重试都失败了?还是那50个中的一些最终成功了?如果是后者,我怎么能知道有多少成功,有多少最终完全失败了?

1 个答案:

答案 0 :(得分:1)

每次由于您达到预配置的吞吐量限制而导致DynamoDB读/写操作失败时,CloudWatch指标 ThrottledRequests (full details)都会增加。如果aws-sdk重试3次并在第三次成功,则ThrottledRequests将增加2。

(注:批处理请求有些细微差别,在链接的文档中有完整的概述)。

测量“由于sdk放弃而失败的请求”要困难一些。这是因为“失败”已经记录为ThrottledRequests。一旦aws-sdk达到配置的最大退休数量,请求将失败。此时,您可以记录故障,然后可以使用自定义CloudWatch metric使故障得以解决。

如果您要专门衡量“已重试但成功的请求”,则可以检查属性Response.retryCount (docs)并进行相应记录。