配額與限制

這份說明文件提供 Pub/Sub 配額與資源使用限制的相關資訊。

如要進一步瞭解如何追蹤配額 (例如主題或訂閱項目使用率),請參閱監控一文。

查看配額用量及管理配額限制

您可以使用 API 及服務配額資訊主頁,查看特定專案目前的配額與用量。另外,您也可以透過這個資訊主頁一次調整一項配額。

如要同時調整多項配額,請使用 IAM 與管理員配額資訊主頁

以上這兩種資訊主頁都能讓您:

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

配額單位

在計算每次要求或回應的用量時,系統是以 1 KB 或要求或回應的總大小兩者中較大者為準。

各要求或回應的配額用量會無條件進位至最接近的 1KB 數。假設您在發布要求中加入了 100 則各含 50 個位元組資料的訊息,以及名稱長度為 30 個位元組的主題,則要求的配額用量為 max(1, ceil(5030/1000)) = 6kB

專案用量屬性

對推送訂閱者總處理量而言,會依據包含推送訂閱的專案收取配額用量費用。

對下列配額而言,會依據與呼叫者憑證相關的專案收取用量費用,而不是依據包含要求資源的專案計費 (也就是出現在主題或訂閱名稱之中的專案):

  • 發布者總處理量
  • 訂閱者總處理量
  • 系統管理員作業

例如若專案 A 的服務帳戶,發布要求在專案 B 之中發布主題,就會向專案 A 收取配額費用。每項要求都含有包括專案 ID 的憑證。

配額限制

API 及服務配額資訊主頁中,您可以查看及編輯各項專案的配額。配額相關資訊請見下表:

配額 預設配額限制 說明
發布者總處理量 每分鐘 6,000 萬 KB (每秒 1,000 MB) 配額用量是以 PublishRequest 所含訊息的大小為準:

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

訂閱者總處理量 每分鐘 12,000 萬 KB (每秒 2,000 MB) 以提取訂閱項目來說,配額用量是以 Pull 回應的大小為準。系統會在回應中提供下列項目:

另外,AcknowledgeModifyAckDeadline 要求中包含的資料量也會計入這項配額:

  • AcknowledgeRequest (遠端程序呼叫)
  • ModifyAckDeadlineRequest (遠端程序呼叫)
    推送訂閱者總處理量 每分鐘 600 萬 KB (每秒 100 MB) 以傳送至推送端點的推送傳遞要求來說,配額用量是以傳送至推送端點的要求大小為準。
    StreamingPull 訂閱者總處理量 每分鐘 1 億 2,000 萬 KB (每秒 2,000 MB) 配額用量是以 StreamingPullResponses 的大小為準:

    請注意,用戶端程式庫會盡可能使用 StreamingPull 作業。

    StreamingPull 公開連線數 每次 30,000 個公開連線 任意時間點的 StreamingPull 公開連線數。請參閱 StreamingPull
    系統管理員作業 每分鐘 6,000 次 (每秒 100 次操作) 每項系統管理員作業 (例如 GetTopicRequest) 都會耗用一個配額單位。

    一般來說,管理作業組合由 Get*, List*, Create*, Delete*, ModifyPushConfig, SetIamPolicy, GetIamPolicyTestIamPermissions 構成。

    資源上限

    資源 限制
    專案 10,000 個主題
    10,000 個訂閱項目5,000 張快照
    主題 10,000 個附加訂閱項目
    5,000 張附加快照
    訂閱 未確認訊息會在永久儲存空間內保留 7 天 (自發布當下起算)。保留的訊息數量沒有限制。
    如果系統在 31 天內未偵測到任何訂閱項目用戶端活動,就會自動刪除該訂閱項目。系統會透過多項呼叫偵測用戶端活動,例如 PullAcknowledge 和成功執行的推送作業。
    發布要求 總大小 10 MB
    1,000 則訊息
    訊息 訊息大小 (data 欄位):10 MB (要求大小上限)
    每則訊息的屬性數:100 項
    屬性鍵大小:256 個位元組
    屬性值大小:1,024 個位元組
    推送傳遞訊息 待處理訊息有以下兩種限制 (以訂閱項目為單位):
    • 10 MB (此限制適用於所有待處理訊息總大小,包括訊息資料及屬性)
    • 總計 1,000 則待處理訊息
    如果端點迅速產生回應 (少於 100 毫秒),這些限制可能不會發揮作用。相關資訊請見推送訂閱者指南
    StreamingPull 串流 每個公開串流 10 MB/s
    Pull/StreamingPull 訊息 本服務可能會限制每個連線的待處理 StreamingPull 訊息總數。如果您受到了這類限制的影響,請提高確認訊息的速率和所用連線的數量。

    提示與注意事項

    大量作業

    如果您是以一般使用者帳戶 (也就是非服務帳戶) 使用 Cloud SDK gcloud 工具,Pub/Sub 只能以適合手動作業的速率執行工作。如果實際速率超過這項限制,系統就會傳回 RESOURCE_EXHAUSTED 錯誤。如要解決這個問題,請確保您使用的是服務帳戶憑證。如要使用 Cloud SDK 提供的憑證自動化處理作業,請啟用服務帳戶來執行 Pub/Sub 作業。

    配額不符

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

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

    • 如果您在單一提取回應中接收前述 10 則訊息,訂閱者配額用量可能只有 5 KB,因為其中合併各項訊息的實際大小以決定整體配額。

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