Pub/Sub 配額和限制

Google Cloud 會使用配額限制您可使用的特定共用 Google Cloud 資源數量。每項配額都代表特定的可計數資源,例如向特定服務發出的 API 呼叫數、傳送至特定服務的位元組數,或是專案同時使用的串流連線數量。

許多服務也設有與配額系統無關的限制。這些是固定限制,例如訊息大小上限或專案中可建立的 Pub/Sub 資源數量,這些限制無法增加或減少。

查看及管理配額

您可以使用 IAM 與管理員配額資訊主頁,查看特定專案目前的配額限制和用量。您也可以使用這個資訊主頁執行下列操作:

  • 調降配額限制
  • 申請提高配額限制

如要進一步瞭解如何監控及發出配額用量警報,請參閱「監控」一文。

配額用量歸因

針對推送訂閱者總處理量而言,系統會依據包含推送訂閱的專案收取配額用量費用。這是訂閱項目名稱中顯示的專案。

針對其他所有配額,系統會依據與要求中指定憑證相關聯的專案收取用量費用。系統不會向包含要求資源的專案收取配額用量費用。

舉例來說,如果專案 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
  • 小型區域:所有其他區域

僅傳送一次的傳送配額取決於區域。請查看下表,瞭解各個地區的詳細資訊。

配額 預設配額限制 說明
每個區域的發布者處理量
  • 大型區域為每分鐘 240,000,000 kB (每秒 4 GB)
  • 中型區域為每分鐘 48,000,000 kB (每秒 800 MB)
  • 小型區域為每分鐘 12,000,000 kB (每秒 200 MB)

pubsub.googleapis.com/regionalpublisher

配額用量是按照已發布的 PubsubMessage 大小計算:

請注意,一個發布要求中可以包含多則訊息,系統不會針對每則訊息額外收取配額費用。

每個區域的提取訂閱者總處理量
  • 大型區域為每分鐘 240,000,000 kB (每秒 4 GB)
  • 中型區域為每分鐘 48,000,000 kB (每秒 800 MB)
  • 小型區域為每分鐘 24,000,000 kB (每秒 400 MB)

pubsub.googleapis.com/regionalsubscriber

配額用量是按照傳回的 PubsubMessage 大小計算:

每個區域的確認者處理量
  • 大型區域為每分鐘 240,000,000 kB (每秒 4 GB)
  • 中型區域為每分鐘 48,000,000 kB (每秒 800 MB)
  • 小型區域為每分鐘 24,000,000 kB (每秒 400 MB)

pubsub.googleapis.com/regionalacknowledger

配額用量是按照 AcknowledgeModifyAckDeadline 要求的大小計算:

每個區域的推送訂閱處理量
  • 大型區域為每分鐘 26,400,000 kB (每秒 440 MB)
  • 中型區域為每分鐘 8,400,000 kB (每秒 140 MB)
  • 小型區域為每分鐘 2,400,000 kB (每秒 40 MB)

pubsub.googleapis.com/regionalpushsubscriber

以傳送至推送端點的推送傳遞要求來說,配額用量是按照傳送至推送端點的 PubsubMessage 大小計算。

BigQuery 訂閱:每個區域的處理量
  • 大型區域為每分鐘 240,000,000 kB (每秒 4 GB)
  • 中型區域為每分鐘 48,000,000 kB (每秒 800 MB)
  • 小型區域為每分鐘 12,000,000 kB (每秒 200 MB)

pubsub.googleapis.com/regionalpushbigquerysubscriber

針對傳送至 BigQuery 的要求,配額用量是按照傳送至 BigQuery 的 PubsubMessage 大小計算。

每個區域的 Cloud Storage 訂閱處理量
  • 大型區域為每分鐘 240,000,000 kB (每秒 4 GB)
  • 中型區域為每分鐘 48,000,000 kB (每秒 800 MB)
  • 小型區域為每分鐘 12,000,000 kB (每秒 200 MB)

pubsub.googleapis.com/regionalpushcloudstoragesubscriber

對於向 Cloud Storage 提出的要求,配額用量是以傳送至 Cloud Storage 的 PubsubMessage 大小為依據。

每個區域的 StreamingPull 訂閱者處理量
  • 大型區域為每分鐘 240,000,000 kB (每秒 4 GB)
  • 中型區域為每分鐘 48,000,000 kB (每秒 800 MB)
  • 小型區域為每分鐘 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

系統管理員作業 每分鐘 6,000 次 (每秒 100 次操作)

pubsub.googleapis.com/administrator

每個系統管理員作業 (例如 GetTopicRequest) 都會耗用一個配額單位。

Get*List*Create*Delete*Update*ModifyPushConfigSetIamPolicyGetIamPolicyTestIamPermissionsValidateSchemaValidateMessageCommitSchemaRollbackSchemaDeleteSchemaRevisionListSchemaRevisionsDetachSubscription 均為系統管理員作業。

在各個區域中,啟用確切一次傳送功能後,訂閱項目消耗的訊息數量
  • 在 us-central1 中,每分鐘 1,000,000 則訊息
  • 在 us-east1 中,每分鐘 700,000 則訊息
  • 在 us-west1 中,每分鐘 300,000 則訊息
  • 其他區域每分鐘 180,000 則訊息

pubsub.googleapis.com/exactlyoncedeliveredmessagecount

配額用量是按照訂閱者消耗的 PubsubMessage 數量計算:

在每個區域使用啟用「僅傳送一次」的訂閱項目時,已確認或延長期限的訊息數量
  • 在 us-central1 中,每分鐘 10,000,000 則訊息
  • 在 us-east1 中,每分鐘 7,000,000 則訊息
  • 在 us-west1 中,每分鐘 3,000,000 則訊息
  • 其他區域每分鐘 1,800,000 則訊息

pubsub.googleapis.com/exactlyonceackcount

配額用量是按照 AcknowledgeModifyAckDeadline 要求中的確認 ID 數量計算:

總處理量配額單位

總處理量配額是以 1 kB 為單位計算用量。1 KB 等於 1,000 個位元組。舉例來說,如果 PublishRequest 中含有 105 則訊息,每則訊息的大小為 50 個位元組,則使用者資料大小為 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
每則訊息的屬性數:100 項
屬性鍵大小:256 個位元組
屬性值大小:1024 個位元組
StreamingPull 串流 每個公開串流 10 MBps
一元提取回應 提取回應中的訊息數量上限:1000
提取回應的大小上限:10 MB
Pull/StreamingPull 訊息 本服務可能會限制每個連線的待處理 StreamingPull 訊息總數。如果您受到這類限制影響,請提高確認訊息的速率和所用連線數量。
Acknowledge 和 ModifyAckDeadline 要求 512 KB (總大小)
排序鍵 如果訊息含有排序鍵,則每個排序鍵的最大發布者總處理量為 1 MBps。
Cloud Storage 值區物件 使用 Cloud Storage 匯入主題時,bucket 中的物件數量上限為 5000 萬。

使用服務帳戶取得更高的配額

如果您是以一般使用者帳戶 (也就是非服務帳戶) 使用 Google Cloud CLI 工具,Pub/Sub 只能以適合手動作業的速率執行工作。一旦超過上述速率限制,系統就會傳回 RESOURCE_EXHAUSTED 錯誤。您只要改用服務帳戶憑證就能解決這個問題。如要使用 gcloud CLI 的憑證進行自動化作業,請啟用服務帳戶來執行 Pub/Sub 作業。

使用位置端點將要求導向

如果部分區域仍有剩餘配額,您可以使用位置 Pub/Sub 端點將要求轉送至這些區域。將訊息發布至全球端點時,Pub/Sub 服務可能會將流量轉送至配額不足的區域。

配額不符

發布或接收訊息小於 1,000 位元組時,可能會發生配額不符的情形,例如:

  • 如果您在不同要求中發布 10 則 500 位元組的訊息,發布者配額用量就是 10,000 位元組。這是因為小於 1,000 位元組的訊息,會自動無條件進位至下一個 1,000 位元組。

  • 如果在單一提取回應中接收了前述 10 則訊息,您的訂閱者配額用量可能變成只有 5 kB,這是因為系統會合併計算各則訊息的實際大小,而得出的總和就是總體配額。

  • 反之亦然。如果您在一項發布要求中同時發布了多則訊息,或是透過不同的提取要求接收訊息,訂閱者配額用量可能會高於發布者配額用量。