API 速率限制

API 速率限制定义了可向 Google Compute Engine API 发出的请求数。API 速率限制按项目计算。使用 gcloud computeGoogle Cloud Platform Console 时,您也会向 API 发出请求,且这些请求将计入您的 API 速率限制。如果您使用服务帐号访问 API,这也会计入您的速率限制。

目前,项目受限于以下 API 速率限制类别。每个限制类别均单独计算,因此您可以同时达到每个类别的最大限制。速率限制的实施间隔为 100 秒。例如,20 个请求/秒等同于 100 秒内 2000 个请求。也就是说,如果您在 100 秒内的任何时间点达到特定限制,都需要等到配额桶刷新才能再发出请求。

  • 查询 - 对 *.get*.list 方法以外的所有其他方法的限制如下:
    • 每个项目的速率:20 个请求/秒
    • 每位用户的速率:20 个请求/秒
  • 读取请求 - 对 *.get 方法的限制如下:
    • 每个项目的速率:20 个请求/秒
    • 每位用户的速率:20 个请求/秒
  • 列出请求 - 对 *.list 方法的限制如下:
    • 每个项目的速率:20 个请求/秒
    • 每位用户的速率:20 个请求/秒
  • 操作读取请求 - 对 *OperationsService.Get 方法的限制如下:
    • 每个项目的速率:20 个请求/秒
    • 每位用户的速率:20 个请求/秒
  • 重量级读取请求 - 对 *.AggregatedList 方法的限制如下:
    • 每个项目的速率:10 个请求/秒
    • 每位用户的速率:10 个请求/秒
  • 重量级变更请求 - 对 InterconnectsServiceInterconnectAttachmentsService 功能的 patchdeleteinsert 方法的限制如下:
    • 每个项目的速率:10 个请求/秒
    • 每位用户的速率:10 个请求/秒
  • 实例 SimulateMaintenanceEvent 请求 - 对 *.SimulateMaintenanceEvent 方法的限制如下:
    • 每个项目的速率:2 个请求/秒
    • 每位用户的速率:2 个请求/秒
  • 许可插入请求 - 对 *.LicensesService.Insert 方法的限制如下:
    • 每个项目的速率:2 个请求/秒
    • 每位用户的速率:2 个请求/秒

如果您需要提高 API 请求的速率限制,则可以通过 Google Cloud Platform Console 申请提高限制。

最佳做法

以下是一些最佳做法,可帮助您应对 Google Compute Engine 上的 API 速率限制。

  • 请谨慎并选择性地使用爆发。“爆发”是允许特定客户端在短时间内发出许多 API 请求的行为。此操作通常是为了响应异常情况,例如应用需要处理的流量比平常多的情况。“爆发”将会快速耗尽您的 API 速率限制,因此请务必只在必要时使用。

  • 使用客户端速率限制器。客户端速率限制器会设置一个人为限制,以便相关客户端只能使用一定数量的配额。这样做可以防止任何一个客户端耗尽您的所有配额。

  • 达到配额后,使用指数退避算法逐步递增发送请求的间隔。这样做可让服务器有时间重新填充配额桶。

  • 避免短轮询,即客户端不断向服务器发出请求而不等待响应的情况。进行短轮询会导致更难以捕获计入配额的错误请求,即使这些请求未返回有用的数据也是如此。

  • 若有多个应用,将其分配在多个项目中。由于配额按项目计算,因此您可以将多个应用分配至多个项目,以便每个应用都有自己专用的配额池。

  • 如果您收到 403 错误并看到错误消息 rateLimitExceeded,请等待几秒钟,然后再次尝试发出请求。配额桶每隔 100 秒重新填充一次,因此在该间隔过后,您的请求应该会成功。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档