我在 CloudWatch API 中调用 PutMetricData 时如何避免限流?

上次更新时间:2020 年 11 月 6 日

我在 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>

按每个区域限制每个 Amazon Web Services (AWS) 账户的 CloudWatch 请求,以帮助提高服务性能。有关当前 PutMetricData API 请求配额的信息,请参阅 CloudWatch 服务配额

注:对一个 AWS 区域中的 PutMetricData API 的所有调用均计入最大允许请求速率中。此数字包括任何自定义或第三方应用程序的调用,如 CloudWatch 代理、AWS 命令行界面 (AWS CLI) 或 AWS 管理控制台的调用。

解决方法

最佳做法是使用下列方法减少您的调用速率及避免 API 限流:

  • 在一段时间内均匀分配您的 API 调用,而不是在短时间内进行多个 API 调用。如果您要求在一分钟解决数据提供问题,您将有整整一分钟的时间来发出该指标。使用抖动(随机延迟)在各个不同时间点发送数据点。
  • 将尽可能多的指标合并到一个 API 调用中。例如,一个 PutMetricData 调用可以包含 20 个指标和 150 个数据点。您还可以使用 StatisticSet预先聚合的数据集来发布聚合数据点,从而减少每秒钟的 PutMetricData 调用次数。
  • 使用指数退避和抖动重试调用。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?