割り当てと上限

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

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

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

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

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

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

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

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

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

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

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

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

割り当て上限

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

割り当て デフォルトの割り当て上限 説明
パブリッシャーのスループット 1 分あたり 60,000,000 kB(1,000 MB/秒) 割り当て使用量は、パブリッシュされた PubsubMessage のサイズに基づきます。

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

pull サブスクライバーのスループット 1 分あたり 120,000,000 kB(2,000 MB/秒) pull オペレーションでは、割り当て使用量は返された PubsubMessage のサイズに基づきます。

加えて、Acknowledge リクエストと ModifyAckDeadline リクエストもこの割り当てに含まれます。

  • AcknowledgeRequest(RPC)
  • ModifyAckDeadlineRequest(RPC)
    push サブスクライバーのスループット 1 分あたり 6,000,000 kB(100 MB/秒) push エンドポイントに行われた push 配信リクエストの場合、割り当て使用量はその push エンドポイントに送信された PubsubMessage のサイズに基づきます。
    StreamingPull サブスクライバーのスループット 1 分あたり 120,000,000 kB(2,000 MB/秒) 割り当て使用量は、サブスクライバーにストリーミングされた PubsubMessage のサイズに基づきます。

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

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

    一般に、管理者オペレーションのセットは Get*, List*, Create*, Delete*, ModifyPushConfig, SetIamPolicy, GetIamPolicyTestIamPermissions で構成されます。

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

    スループット割り当て使用量は 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 日間クライアントの存在が検出されなかったサブスクリプションは自動的に削除されることがあります。クライアントの存在は、PullAcknowledge、成功した push オペレーションなどの呼び出しを通して検出されます。
    パブリッシュ リクエスト 10 MB(合計サイズ)
    1,000 メッセージ
    メッセージ メッセージ サイズ(data フィールド): 10 MB(最大リクエスト サイズ)
    メッセージあたりの属性数: 100
    属性キーサイズ: 256 バイト
    属性値サイズ: 1,024 バイト
    未処理のメッセージの push 3,000 * N 件(N は公開リージョンの数)。詳細については、push サブスクリプションの使用をご覧ください。
    StreamingPull ストリーム 1 オープン ストリームあたり 10 MB/秒
    Pull/StreamingPull メッセージ 接続あたりの未処理の StreamingPull メッセージの合計数に対する上限が適用される場合があります。この上限が適用された場合は、メッセージを確認する頻度と使用する接続数を増やします。

    ヒントと注意点

    大量のオペレーション

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

    割り当て使用量の不一致

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

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

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

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