我在 Amazon CloudWatch 中收到 PutMetricData API 调用的错误“400 ThrottlingException”。
简短描述
当您在 CloudWatch 中收到 PutMetricData API 调用的错误“400 ThrottlingException”时,您还会收到以下消息:
<ErrorResponse xmlns="http://monitoring.amazonaws.com/doc/2010-08-01/">
<Error>
<Type>Sender</Type>
<Code>Throttling</Code>
<Message>Rate exceeded</Message>
</Error>
<RequestId>2f85f68d-980b-11e7-a296-21716fd2d2e3</RequestId>
</ErrorResponse>
为了提高服务性能,CloudWatch 会根据 AWS 区域限制每个 AWS 账户的请求数。有关当前 PutMetricData API 请求配额的信息,请参阅 CloudWatch 服务限额。
**注意:**对一个区域中的 PutMetricData API 的所有调用均计入最大允许请求速率中。此数值包括来自任何自定义或第三方应用程序的呼叫。此类应用程序的示例包括 CloudWatch 代理、AWS 命令行界面(AWS CLI)和 AWS 管理控制台。
解决方法
最佳做法是使用下列方法减少您的调用速率及避免 API 限流:
- 在一段时间内均匀分配您的 API 调用,而不是在短时间内进行多个 API 调用。如果您要求在 1 分钟解决数据提供问题,您将有整整一分钟的时间来发出该指标。使用抖动(随机延迟)在各个不同时间点发送数据点。
- 将尽可能多的指标合并到一个 API 调用中。例如,一个 PutMetricData 调用可以包含 1,000 个指标和 150 个数据点。您还可以使用 StatisticSet 等预先聚合的数据集来发布聚合数据点。这可以减少每秒 PutMetricData 的调用次数。
- 使用指数回退和抖动重试调用。
相关信息
CloudWatch API 参考