Pub/Sub の割り当てと上限

Google Cloud では、割り当てを使用して、使用できる特定の共有 Google Cloud リソースの量を制限しています。各割り当ては、特定のサービスへの API 呼び出し、特定のサービスに送信されるバイト数、プロジェクトで同時に使用されるストリーミング接続の数など、特定のカウント可能なリソースを表します。

多くのサービスには、割り当てシステムとは無関係の上限が存在します。それらは、メッセージサイズ上限やプロジェクト内に作成できる Pub/Sub リソースの数などの固定的な制約であり、増減することはできません。

割り当ての表示と管理

特定のプロジェクトについて、現在の割り当ての上限と使用状況を確認するには、IAM と管理の割り当てダッシュボードを使用します。このダッシュボードを使用して、次のことを行うこともできます。

  • 割り当ての上限を引き下げる。
  • 割り当ての上限引き上げを申請するプロセスを開始する。

割り当て使用量のモニタリングとアラートの詳細については、モニタリングをご覧ください。

割り当て使用量属性

push サブスクライバーのスループットについては、該当する push サブスクリプションを含むプロジェクトに対して、割り当て使用量の料金が請求されます。これは、サブスクリプションの名前に表示されるプロジェクトです。

他のすべての割り当てについては、リクエストで指定された認証情報に関連付けられたプロジェクトに対して、使用量の料金が請求されます。割り当て使用量の料金は、リクエストされたリソースを含むプロジェクトに対して請求されません。

たとえば、プロジェクト A のサービス アカウントからプロジェクト B 内のトピックにパブリッシュするためのパブリッシュ リクエストが送信された場合、割り当て使用量の料金はプロジェクト A に対して請求されます。場合によっては、別のプロジェクトに対して割り当て使用量の料金を請求することもできます。X-Goog-User-Project システム パラメータを使用して、割り当て属性用のプロジェクトを変更できます。X-Goog-User-Project の詳細については、システム パラメータをご覧ください。

gcloud CLI を使用して、特定のリクエストに対する割り当て属性用のプロジェクトを設定できます。gcloud CLI は X-Goog-User-Project リクエスト ヘッダーを送信します。

割り当て属性に使用するプロジェクトに対する roles/serviceusage.serviceUsageConsumer ロールまたは serviceusage.services.use 権限を持つカスタムロールが必要です。

次の例は、プロジェクト QUOTA_PROJECT に対して管理者のオペレーションの割り当てを請求しながら、プロジェクト RESOURCE_PROJECT 内のサブスクリプションのリストを取得する方法を示しています。Google Cloud CLI ターミナルで次のコマンドを実行します。

gcloud pubsub subscriptions list --project=
RESOURCE_PROJECT --billing-project=
QUOTA_PROJECT

QUOTA_PROJECT は、割り当てを請求する Google Cloud プロジェクトの ID に置き換えます。

なお、Pub/Sub では常に、課金対象のプロジェクトがリソースを含むプロジェクトになります。割り当て属性に対してのみ、プロジェクトを変更できます。

Pub/Sub の割り当て

次の表に記載する割り当ては、API とサービスの割り当てダッシュボードでプロジェクトごとに表示、編集できます。

リージョンの割り当ては、3 つのタイプに分けられます。

  • 大規模リージョン: europe-west1europe-west4us-central1us-east1us-east4us-west1us-west2
  • 中規模リージョン: asia-east1asia-northeast1asia-southeast1europe-west2europe-west3
  • 小規模リージョン: 他のすべてのリージョン

1 回限りの配信の割り当ては、リージョンごとに異なります。次の表で各リージョンの詳細を確認してください。

割り当て デフォルトの割り当て上限 説明
リージョンごとのパブリッシャーのスループット
  • 大規模リージョンで 1 分あたり 240,000,000 KB(4 GB/秒)
  • 中規模リージョンで 1 分あたり 48,000,000 KB(800 MB/秒)
  • 小規模リージョンで 1 分あたり 12,000,000 KB(200 MB/秒)

pubsub.googleapis.com/regionalpublisher

割り当て使用量は、パブリッシュされた PubsubMessage のサイズに基づきます。

複数のメッセージを 1 つのパブリッシュ リクエストに含めることができます。1 メッセージあたりの追加割り当て料金はありません。

リージョンごとの pull サブスクライバーのスループット
  • 大規模リージョンで 1 分あたり 240,000,000 KB(4 GB/秒)
  • 中規模リージョンで 1 分あたり 48,000,000 KB(800 MB/秒)
  • 小規模リージョンで 1 分あたり 24,000,000 KB(400 MB/秒)

pubsub.googleapis.com/regionalsubscriber

割り当て使用量は、返された PubsubMessage のサイズに基づきます。

リージョンごとの Acknowledger のスループット
  • 大規模リージョンで 1 分あたり 240,000,000 KB(4 GB/秒)
  • 中規模リージョンで 1 分あたり 48,000,000 KB(800 MB/秒)
  • 小規模リージョンで 1 分あたり 24,000,000 KB(400 MB/秒)

pubsub.googleapis.com/regionalacknowledger

割り当て使用量は、Acknowledge リクエストと ModifyAckDeadline リクエストのサイズに基づきます。

リージョンごとの push およびエクスポート サブスクライバーのスループット
  • 大規模リージョンで 1 分あたり 26,400,000 KB(440 MB/秒)
  • 中規模リージョンで 1 分あたり 8,400,000 KB(140 MB/秒)
  • 小規模リージョンで 1 分あたり 2,400,000 KB(40 MB/秒)

pubsub.googleapis.com/regionalpushsubscriber

push エンドポイントに行われた push 配信リクエストの場合、割り当て使用量はその push エンドポイントに送信された PubsubMessage のサイズに基づきます。

リージョンごとの StreamingPull サブスクライバーのスループット
  • 大規模リージョンで 1 分あたり 240,000,000 KB(4 GB/秒)
  • 中規模リージョンで 1 分あたり 48,000,000 KB(800 MB/秒)
  • 小規模リージョンで 1 分あたり 24,000,000 KB(400 MB/秒)

pubsub.googleapis.com/regionalstreamingpullsubscriber

割り当て使用量は、サブスクライバーにストリーミングされた PubsubMessage のサイズに基づきます。

クライアント ライブラリでは、可能な限り StreamingPull オペレーションを使用します。

リージョンごとの StreamingPull のオープン接続数
  • 大規模リージョンでの同時オープン接続数 72,000
  • 中規模リージョンでの同時オープン接続数 48,000
  • 小規模リージョンでの同時オープン接続数 24,000

pubsub.googleapis.com/regionalstreamingpullconnections

任意の時点での StreamingPull の同時オープン接続数。 StreamingPull をご覧ください。

管理者のオペレーション 1 分あたり 6,000(100 オペレーション/秒)

pubsub.googleapis.com/administrator

各管理者オペレーション(GetTopicRequest など)が 1 ユニットとして割り当て使用量に計上されます。

Get*List*Create*Delete*Update*ModifyPushConfigSetIamPolicyGetIamPolicyTestIamPermissionsValidateSchemaValidateMessageCommitSchemaRollbackSchemaDeleteSchemaRevisionListSchemaRevisionsDetachSubscription は管理者オペレーションです。

1 回限りの配信が有効になっているサブスクリプションから消費されたリージョンごとのメッセージ数
  • us-central1 で 1 分あたり 1,000,000 件のメッセージ
  • us-east1 で 1 分あたり 700,000 件のメッセージ
  • us-west1 で 1 分あたり 300,000 件のメッセージ
  • その他のリージョンで 1 分あたり 180,000 件のメッセージ

pubsub.googleapis.com/exactlyoncedeliveredmessagecount

割り当て使用量は、サブスクライバーが消費した PubsubMessage の数に基づきます。

1 回限りの配信が有効になっているサブスクリプションを使用する場合に、確認応答済みのメッセージまたは期限が延長されたメッセージのリージョンごとの数
  • us-central1 で 1 分あたり 10,000,000 件のメッセージ
  • us-east1 で 1 分あたり 7,000,000 件のメッセージ
  • us-west1 で 1 分あたり 3,000,000 件のメッセージ
  • その他のリージョンで 1 分あたり 1,800,000 件のメッセージ

pubsub.googleapis.com/exactlyonceackcount

割り当て使用量は、Acknowledge リクエストと ModifyAckDeadline リクエストの確認応答 ID の数に基づきます。

スループット割り当ての単位

スループット割り当て使用量は KB 単位で測定されます。1 KB は 1,000 バイトです。たとえば、PublishRequest に 50 バイトのメッセージが 105 件含まれ、ユーザーデータのサイズが 105 * 50 bytes = 5250 bytes の場合、割り当て使用量は max(1kB, ceil(5250 bytes/1000)) = 6kB となります。

リソースの上限

リソース 上限
プロジェクト 10,000 トピック
10,000 アタッチ / デタッチ サブスクリプション
5,000 スナップショット
10,000 スキーマ
トピック 関連付けるサブスクリプション 10,000 件
関連付けるスナップショット 5,000 個
トピックのメッセージ保持 が設定されている場合、トピックに公開されたメッセージは、公開時から最大 31 日間永続ストレージに保持できます。
サブスクリプション デフォルトでは、未確認応答メッセージは公開時から 7 日間永続ストレージに保持されます。保持されるメッセージのに上限はありません。
サブスクライバーがサブスクリプションを使用していない場合、サブスクリプションは期限切れとなります。 デフォルトの有効期間は 31 日間です。
スキーマ スキーマサイズ(definition フィールド): 300 KB
スキーマあたりのリビジョン数: 20
パブリッシュ リクエスト 10 MB(合計サイズ)
1,000 メッセージ
メッセージ メッセージ サイズ(data フィールド): 10 MB
1 メッセージあたりの属性数: 100
属性キーサイズ: 256 バイト
属性値サイズ: 1,024 バイト
StreamingPull ストリーム 1 オープン ストリームあたり 10 MB/秒
単項 Pull レスポンス Pull レスポンスのメッセージの最大数: 1,000
Pull レスポンスの最大サイズ: 10 MB
Pull / StreamingPull メッセージ 1 接続あたりの未処理の StreamingPull メッセージの合計数に対する上限が適用される場合があります。この上限が適用された場合は、メッセージを確認する頻度と使用する接続数を増やします。
Acknowledge リクエストと ModifyAckDeadline リクエスト 512 KB(合計サイズ)
順序指定キー メッセージに順序指定キーが含まれている場合、パブリッシャーの最大スループットは各順序指定キーあたり 1 MBps です。

より大きな割り当てにサービス アカウントを使用する

通常のユーザー アカウント(つまり、非サービス アカウント)で Google Cloud CLI gcloud ツールを使用している場合は、Pub/Sub オペレーションは手動オペレーションに適した速度に制限されます。この上限を超える速度では、RESOURCE_EXHAUSTED エラーが発生します。これに対する解決策は、必ずサービス アカウント認証情報を使用することです。gcloud CLI からの認証情報を自動化に使用するには、Pub/Sub オペレーション用のサービス アカウントをアクティブにします

ロケーション エンドポイントを使用してリクエストをルーティングする

特定のリージョンで追加の割り当てがある場合、ロケーション Pub/Sub エンドポイントを使用して、これらのリージョンにリクエストをルーティングできます。メッセージをグローバル エンドポイントにパブリッシュすると、Pub/Sub サービスは、十分な割り当てがないリージョンにトラフィックをルーティングすることがあります。

割り当て使用量の不一致

割り当て使用量の不一致は、パブリッシュまたは受信されるメッセージのサイズが、1,000 バイトより小さい場合に発生することがあります。次に例を示します。

  • 10 件の 500 バイトのメッセージを個別のリクエストでパブリッシュすると、パブリッシャーの割り当て使用量は 10,000 バイトになります。これは、1,000 バイトより小さいメッセージは自動的に 1,000 バイトに切り上げられるためです。

  • これら 10 件のメッセージを 1 つの pull レスポンスで受信する場合、サブスクライバーの割り当て使用量は 5 KB になります。これは、各メッセージの実際のサイズを合計した数値が全体の使用量となるためです。

  • その逆も当てはまります。複数のメッセージを 1 つのパブリッシュ リクエストでパブリッシュしたり、個別の pull リクエストで複数のメッセージを受信したりすると、サブスクライバーの割り当て使用量がパブリッシャーの割り当て使用量より大きくなる場合があります。