我如何判断 DynamoDB 受限请求成功的频率?

How can I tell how often a DynamoDB throttled request succeeded?

当像dynamoClient.update(params)这样的请求被限制时,我的理解是SDK会自动尝试多次重试,只有在所有重试都失败后,调用才会失败。如果其中之一成功,则调用成功。

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

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

每次 DynamoDB read/write 操作失败时,CloudWatch 指标 ThrottledRequests (full details) 都会增加,因为您达到了配置的吞吐量限制。如果 aws-sdk 重试三次并在第三次成功,则 ThrottledRequests 递增 2。

(n.b。批量请求有一些细微差别,链接文档中有完整概述。

"failed requests because the sdk gave up" 的测量有点困难。这是因为 'failures' 已经被记录为 ThrottledRequests。一旦 aws-sdk 达到配置的最大退出次数,请求将失败。此时您可以记录失败,然后您可以使用自定义 CloudWatch metric.

如果您想专门测量 "requests that retried but succeded",您可以检查 属性 Response.retryCount (docs) 并相应地记录。