このドキュメントでは、Pub/Sub の割り当てとリソースの上限について説明します。
割り当て(トピックとサブスクリプションの使用状況など)を追跡する方法について詳しくは、モニタリングをご覧ください。
割り当て使用量の表示と割り当て上限の管理
特定のプロジェクトについて、現在の割り当ての上限と使用量を表示するには、API とサービスの割り当てダッシュボードを使用します。このダッシュボードを使用して、割り当て上限を一度に 1 つずつ変更することもできます。
複数の割り当て上限を変更するには、IAM と管理の割り当てダッシュボードを使用します。
次のことを行うには、上記のいずれかのダッシュボードを使用できます。
- 割り当ての上限を引き下げる。
- 割り当ての上限の引き上げを申請するプロセスを開始する。
割り当て指標のモニタリングとアラートをカスタマイズする方法について詳しくは、割り当て指標の使用をご覧ください。
プロジェクトの使用量属性
push サブスクライバーのスループットについては、該当する push サブスクリプションを含むプロジェクトに対して、割り当て使用量の料金が請求されます。
次の割り当てについては、リクエストされたリソースが含まれるプロジェクト(トピックまたはサブスクリプション名に表示されるプロジェクト)に対してでなく、発信者の認証情報に関連付けられているプロジェクトに対して、使用量の料金が請求されます。
- パブリッシャーのスループット
- サブスクライバーのスループット
- 管理者のオペレーション
たとえば、プロジェクト A のサービス アカウントからプロジェクト B 内のトピックにパブリッシュするためのパブリッシュ リクエストが送信された場合、割り当て使用量の料金はプロジェクト A に対して請求されます。各リクエストには、プロジェクト ID などの認証情報が含まれます。
割り当て上限
次の表に記載する割り当ては、API とサービスの割り当てダッシュボードでプロジェクトごとに表示、編集できます。
リージョンの割り当ては、2 つのタイプに分けられます。
- 大規模リージョン:
europe-west1
、us-central1
、us-east1
- 小規模リージョン: 他のすべてのリージョン
割り当て | デフォルトの割り当て上限 | 説明 |
---|---|---|
リージョンごとのパブリッシャーのスループット |
|
割り当て使用量は、パブリッシュされた PubsubMessage のサイズに基づきます。
複数のメッセージを 1 つのパブリッシュ リクエストに含めることができます。1 メッセージあたりの追加割り当て料金はありません。 メッセージに順序指定キーが含まれている場合、パブリッシャーの最大スループットは 1 順序指定キーあたり 1 MB/秒です。 |
リージョンごとの pull サブスクライバーのスループット |
|
割り当て使用量は、返された PubsubMessage のサイズに基づきます。
|
リージョンごとの Acknowledger のスループット |
|
割り当て使用量は、Acknowledge リクエストと ModifyAckDeadline リクエストのサイズに基づきます。
|
リージョンごとの push サブスクライバーのスループット |
|
push エンドポイントに行われた push 配信リクエストの場合、割り当て使用量はその push エンドポイントに送信された PubsubMessage のサイズに基づきます。
|
リージョンごとの StreamingPull サブスクライバーのスループット |
|
割り当て使用量は、サブスクライバーにストリーミングされた PubsubMessage のサイズに基づきます。
クライアント ライブラリでは、可能な限り StreamingPull オペレーションを使用します。 |
リージョンごとの StreamingPull のオープン接続数 |
|
任意の時点での StreamingPull の同時オープン接続数。 StreamingPull をご覧ください。 |
管理者のオペレーション | 1 分あたり 6,000(100 オペレーション/秒) | 各管理者オペレーション(GetTopicRequest など)が 1 ユニットとして割り当て使用量に計上されます。
|
スループット割り当ての単位
スループット割り当て使用量は 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 アタッチ スナップショット |
サブスクリプション | 確認応答されていないメッセージは、パブリッシュされた時点から 7 日間、永続ストレージに保持されます。保持されるメッセージの数に上限はありません。 サブスクライバーがサブスクリプションを使用していない場合、サブスクリプションは期限切れとなります。 デフォルトの有効期間は 31 日間です。 |
スキーマ | スキーマサイズ(definition フィールド): 10 KB
|
パブリッシュ リクエスト | 10 MB(合計サイズ) 1,000 メッセージ |
メッセージ | メッセージ サイズ(data フィールド): 10 MB1 メッセージあたりの属性数: 100 属性キーサイズ: 256 バイト 属性値サイズ: 1,024 バイト |
未処理のメッセージの 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 リクエストで複数のメッセージを受信したりすると、サブスクライバーの割り当て使用量がパブリッシャーの割り当て使用量より大きくなる場合があります。