割り当てと上限

このドキュメントでは、Pub/Sub の割り当てとリソースの上限について説明します。

割り当て(トピックとサブスクリプションの使用状況など)を追跡する方法について詳しくは、モニタリングをご覧ください。

割り当て使用量の表示と割り当て上限の管理

特定のプロジェクトについて、現在の割り当てとその使用量を表示するには、API とサービスの割り当てダッシュボードを使用します。このダッシュボードを使用して、割り当てを 1 つずつ変更することもできます。

複数の割り当てを変更するには、IAM と管理の割り当てダッシュボードを使用します。

次のことを行うには、上記のいずれかのダッシュボードを使用できます。

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

プロジェクトの使用量属性

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

次の割り当てについては、リクエストされたリソースが含まれるプロジェクト(トピックまたはサブスクリプション名に表示されるプロジェクト)に対してでなく、発信者の認証情報に関連付けられているプロジェクトに対して、使用量の料金が請求されます。

  • パブリッシャーのスループット
  • サブスクライバーのスループット
  • 管理者のオペレーション

たとえば、プロジェクト A のサービス アカウントからプロジェクト B 内のトピックにパブリッシュするためのパブリッシュ リクエストが送信された場合、割り当て使用量の料金はプロジェクト A に対して請求されます。各リクエストには、プロジェクト ID などの認証情報が含まれます。

割り当て上限

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

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

  • 大規模リージョン: europe-west1us-central1us-east1
  • 小規模リージョン: 他のすべてのリージョン

割り当て デフォルトの割り当て上限 説明
リージョンごとのパブリッシャーのスループット
  • 大規模リージョンで 1 分あたり 12,000,000 KB(200 MB/秒)
  • 小規模リージョンで 1 分あたり 3,000,000 KB(50 MB/秒)
割り当て使用量は、パブリッシュされた PubsubMessage のサイズに基づきます。

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

メッセージに順序指定キーが含まれている場合、パブリッシャーの最大スループットは 1 順序指定キーあたり 1 MB/秒です。

リージョンごとの pull サブスクライバーのスループット
  • 大規模リージョンで 1 分あたり 24,000,000 KB(400 MB/秒)
  • 小規模リージョンで 1 分あたり 6,000,000 KB(100 MB/秒)
割り当て使用量は、返された PubsubMessage のサイズに基づきます。
リージョンごとの Acknowledger のスループット
  • 大規模リージョンで 1 分あたり 24,000,000 KB(400 MB/秒)
  • 小規模リージョンで 1 分あたり 6,000,000 KB(100 MB/秒)
割り当て使用量は、Acknowledge リクエストと ModifyAckDeadline リクエストのサイズに基づきます。
リージョンごとの push サブスクライバーのスループット
  • 大規模リージョンで 1 分あたり 1,200,000 KB(20 MB/秒)
  • 小規模リージョンで 1 分あたり 300,000 KB(5 MB/秒)
push エンドポイントに行われた push 配信リクエストの場合、割り当て使用量はその push エンドポイントに送信された PubsubMessage のサイズに基づきます。
リージョンごとの StreamingPull サブスクライバーのスループット
  • 大規模リージョンで 1 分あたり 24,000,000 KB(400 MB/秒)
  • 小規模リージョンで 1 分あたり 6,000,000 KB(100 MB/秒)
割り当て使用量は、サブスクライバーにストリーミングされた PubsubMessage のサイズに基づきます。

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

リージョンごとの StreamingPull のオープン接続数
  • 大規模リージョンでの同時オープン接続数 24,000
  • 小規模リージョンでの同時オープン接続数 6,000
任意の時点での StreamingPull の同時オープン接続数。 StreamingPull をご覧ください。
管理者のオペレーション 1 分あたり 6,000(100 オペレーション/秒) 各管理者オペレーション(GetTopicRequest など)が 1 ユニットとして割り当て使用量に計上されます。

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

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

スループット割り当て使用量は 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 アタッチ サブスクリプション
5,000 アタッチ スナップショット
サブスクリプション 確認応答されていないメッセージは、パブリッシュされた時点から 7 日間、永続ストレージに保持されます。保持されるメッセージのに上限はありません。
サブスクライバーがサブスクリプションを使用していない場合、サブスクリプションは期限切れとなります。 デフォルトの有効期間は 31 日間です。
パブリッシュ リクエスト 10 MB(合計サイズ)
1,000 メッセージ
メッセージ メッセージ サイズ(data フィールド): 10 MB
1 メッセージあたりの属性数: 100
属性キーサイズ: 256 バイト
属性値サイズ: 1,024 バイト
未処理のメッセージの push

3,000 * N(デフォルト)。

30,000 * N(メッセージの 99% 以上、push リクエスト レイテンシ平均 1 秒未満を確認するサブスクリプション)。l10n-attrs-original-order="of,push,request">

N は公開リージョンの数です。詳細については、push サブスクリプションの使用をご覧ください。

StreamingPull ストリーム 1 オープン ストリームあたり 10 MB/秒
Pull / StreamingPull メッセージ 1 接続あたりの未処理の StreamingPull メッセージの合計数に対する上限が適用される場合があります。この上限が適用された場合は、メッセージを確認する頻度と使用する接続数を増やします。

ヒントと注意点

大量のオペレーション

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

エンドポイント

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

割り当て使用量の不一致

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

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

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

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