制限と割り当て

このガイドでは、Data Manager API を使用する際の上限と割り当てについて説明します。

プロジェクト数の上限

Data Manager API を使用するには、Google Cloud プロジェクトが必要です。Google Cloud プロジェクトは、API リクエストの認証に使用する OAuth クライアントと認証情報を提供します。

Data Manager API は、サービスとオペレーション タイプ(読み取りと変更)ごとに、各 Google Cloud プロジェクトにレート制限を適用します。

サービス オペレーション 1 日あたりのリクエスト数 1 分あたりのリクエスト数
IngestionService 変更(書き込み) 100,000 300
IngestionService 読み取り 100,000 300
その他のすべてのサービスを組み合わせたもの 変更(書き込み) 50,000 300
その他のすべてのサービスを組み合わせたもの 読み取り 50,000 300

上限を超えるリクエストは、エラー RESOURCE_EXHAUSTED と HTTP ステータス 429 Too Many Requests で拒否されます。

リクエスト数を積極的に減らし、クライアント側から QPS をスロットリングすることで、アプリを制御し、レート制限を緩和できます。また、Google Cloud コンソールで割り当てアラートとモニタリングを設定して、アプリケーションが上限に達する前に通知を受け取ることもできます。

割り当て名

各上限は、Google Cloud の割り当て上限の名前と指標に対応しています。リクエストが上限を超えると、Data Manager API は metadata.quota_limit の ErrorInfo 標準詳細ペイロードで割り当て上限名を返します。

割り当て上限名 サービス オペレーション ウィンドウ 上限
IngestionMutateRequestsPerDayPerProject IngestionService アクション 日 100,000
IngestionMutateRequestsPerMinutePerProject IngestionService アクション 分 300
IngestionReadRequestsPerDayPerProject IngestionService 読み取り 日 100,000
IngestionReadRequestsPerMinutePerProject IngestionService 読み取り 分 300
ManagementMutateRequestsPerDayPerProject その他のすべてのサービス アクション 日 50,000
ManagementMutateRequestsPerMinutePerProject その他のすべてのサービス アクション 分 300
ManagementReadRequestsPerDayPerProject その他のすべてのサービス 読み取り 日 50,000
ManagementReadRequestsPerMinutePerProject その他のすべてのサービス 読み取り 分 300

ErrorInfo ペイロードの metadata.quota_limit を調べて、1 日あたりの上限エラーと 1 分あたりの上限エラーを区別し、一時的に一時停止してバックオフで再試行するか、1 日あたりの割り当てがリセットされるまで一時停止するかを決定します。詳細については、割り当てとレート制限のエラーをご覧ください。

レート制限と同時実行を処理する

プロジェクトの割り当てを超えずにスループットを最大化するには、次のガイドラインに従ってください。

  • リクエストあたりのバッチレコード数: リクエストの上限(リクエストあたり最大 10,000 個の AudienceMember リソースまたは 2,000 個の Event リソース)まで、各リクエストにできるだけ多くのレコードを含めます。

  • 最大 10 件の同時リクエストを送信する: 1 分あたり 300 件のリクエストの上限を超えずに、合計取り込み時間を短縮するには、IngestionService に最大 10 件の同時リクエストを送信します。

  • バックオフを使用して 1 分あたりのレート制限を再試行する: リクエストが RESOURCE_EXHAUSTED(HTTP 429)で失敗し、metadata.quota_limit が 1 分あたりの制限(IngestionMutateRequestsPerMinutePerProject など)を示している場合は、ジッターを伴う指数バックオフを使用して再試行します(たとえば、再試行の間に 1 秒、2 秒、4 秒待機します)。

  • 1 日の割り当てが上限に達した場合は一時停止する: metadata.quota_limit が 1 日の上限(IngestionMutateRequestsPerDayPerProject など)を示している場合は、すぐに再試行しないでください。1 日の割り当てが太平洋時間の午前 0 時にリセットされるまで、リクエストを一時停止します。

リクエストに関する上限

特定のリクエストの上限は次のとおりです。

  • IngestAudienceMembersRequest と RemoveAudienceMembersRequest:

    • audience_members リスト内の 10,000 個の AudienceMember リソース

    • AudienceMember の UserData に 10 個のユーザー識別子

    • destinations リストに 10 個の Destination リソース

  • RemoveAllAudienceMembersRequest:

    • destinations リストに 10 個の Destination リソース
  • IngestEventsRequest:

    • events リスト内の 2,000 個の Event リソース

    • Event の UserData に 10 個のユーザー識別子

    • destinations リストに 10 個の Destination リソース