限制和配额

请按照本指南了解使用 Data Manager API 时的限制和配额。

项目数量限制

您需要有一个 Google Cloud 项目才能使用 Data Manager API。Google Cloud 项目提供您用于对 API 请求进行身份验证的 OAuth 客户端和凭据。

Data Manager API 会对每个 Google Cloud 项目实施速率限制,并按服务和操作类型(读取与更改)进行区分:

服务 操作 每日请求数 每分钟请求数
IngestionService 更改(写入) 100000 300
IngestionService 读取 100000 300
所有其他服务 Mutate(写入) 5 万 300
所有其他服务 读取 5 万 300

超出限制的请求会被拒绝,并返回错误 RESOURCE_EXHAUSTED 和 HTTP 状态 429 Too Many Requests。

您可以通过主动减少请求数量和从客户端限制 QPS 来控制应用并缓解速率限制。您还可以在 Google Cloud 控制台中设置配额提醒和监控,以便在应用达到限制之前收到通知。

配额名称

每个限制都对应于 Google Cloud 中的配额限制名称和指标。当请求超出限制时,Data Manager API 会在 metadata.quota_limit 下的 ErrorInfo 标准详细信息载荷中返回配额限制名称:

配额限制名称 服务 操作 窗口 限制
IngestionMutateRequestsPerDayPerProject IngestionService mutate 日 100000
IngestionMutateRequestsPerMinutePerProject IngestionService mutate 分钟 300
IngestionReadRequestsPerDayPerProject IngestionService 读取 日 100000
IngestionReadRequestsPerMinutePerProject IngestionService 读取 分钟 300
ManagementMutateRequestsPerDayPerProject 所有其他服务 mutate 日 5 万
ManagementMutateRequestsPerMinutePerProject 所有其他服务 mutate 分钟 300
ManagementReadRequestsPerDayPerProject 所有其他服务 读取 日 5 万
ManagementReadRequestsPerMinutePerProject 所有其他服务 读取 分钟 300

检查 ErrorInfo 载荷中的 metadata.quota_limit,以区分每日限制错误和每分钟限制错误,并确定是暂时暂停并使用退避算法重试,还是暂停到每日配额重置。如需了解详情,请参阅配额和速率限制错误。

处理速率限制和并发

如需在不超出项目配额的情况下最大限度地提高吞吐量,请遵循以下准则:

  • 每个请求的批量记录数:在每个请求中包含尽可能多的记录,最多不超过请求限制(每个请求最多 10,000 个 AudienceMember 资源或 2,000 个 Event 资源)。

  • 最多发送 10 个并发请求:为了在不超过每分钟 300 个请求的限制的情况下缩短总提取时间,最多向 IngestionService 发送 10 个并发请求。

  • 使用退避算法重试每分钟速率限制:如果请求失败并显示 RESOURCE_EXHAUSTED (HTTP 429),并且 metadata.quota_limit 指示每分钟限制(例如 IngestionMutateRequestsPerMinutePerProject),请使用带抖动的指数退避算法重试(例如,在重试之间等待 1 秒、2 秒和 4 秒)。

  • 在每日配额用尽时暂停:如果 metadata.quota_limit 指示每日限额(例如 IngestionMutateRequestsPerDayPerProject),请勿立即重试。暂停请求,直到每日配额在美国太平洋时间午夜重置。

请求限制

以下是特定请求的限制: