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 权限的自定义角色 将用于配额归因。

以下示例展示了如何获取项目中的订阅列表 在向管理员收费时RESOURCE_PROJECT 项目的配额QUOTA_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
  • 较小区域:所有其他区域

“正好一次”分发配额因区域而异。请查看下表中每个区域的详细信息。

配额 默认配额限制 说明
每个区域的发布者吞吐量
  • 较大区域:2.4 亿 kB/分钟(4 GB/秒)
  • 中等区域:4800 万 kB/分钟(800 MB/秒)
  • 较小区域:1200 万 kB/分钟(200 MB/秒)

pubsub.googleapis.com/regionalpublisher

配额用量按发布的 PubsubMessage 大小计算:

请注意,单个发布请求中可以包含多条消息,系统不会再另外按每条消息计算配额。

每个区域的拉取订阅者吞吐量
  • 较大区域:2.4 亿 kB/分钟(4 GB/秒)
  • 中等区域:4800 万 kB/分钟(800 MB/秒)
  • 较小区域:2400 万 kB/分钟(400 MB/秒)

pubsub.googleapis.com/regionalsubscriber

配额用量按返回的 PubsubMessage 大小计算:

每个区域的 Acknowledger 吞吐量
  • 较大区域:2.4 亿 kB/分钟(4 GB/秒)
  • 中等区域:4800 万 kB/分钟(800 MB/秒)
  • 较小区域:2400 万 kB/分钟(400 MB/秒)

pubsub.googleapis.com/regionalacknowledger

配额用量按 AcknowledgeModifyAckDeadline 请求的大小计算:

每个区域的推送订阅吞吐量
  • 较大区域:2640 万 kB/分钟(440 MB/秒)
  • 中等区域:840 万 kB/分钟(140 MB/秒)
  • 较小区域:240 万 kB/分钟(40 MB/秒)

pubsub.googleapis.com/regionalpushsubscriber

对于向推送端点发出的推送传送请求,配额用量按发送到推送端点的 PubsubMessage 大小计算。

BigQuery 订阅 每个区域的吞吐量
  • 较大区域:2640 万 kB/分钟(440 MB/秒)
  • 中等区域:840 万 kB/分钟(140 MB/秒)
  • 较小区域:240 万 kB/分钟(40 MB/秒)

pubsub.googleapis.com/regionalpushbigquerysubscriber

对于向 BigQuery 发出的请求,配额用量按发送到 BigQuery 的 PubsubMessage 大小计算。

Cloud Storage 订阅 每个区域的吞吐量
  • 较大区域:2640 万 kB/分钟(440 MB/秒)
  • 中等区域:840 万 kB/分钟(140 MB/秒)
  • 较小区域:240 万 kB/分钟(40 MB/秒)

pubsub.googleapis.com/regionalpushcloudstoragesubscriber

对于向 Cloud Storage 发出的请求 配额用量按发送的 PubsubMessage 大小计算 Cloud Storage

每个区域的 StreamingPull 订阅者吞吐量
  • 较大区域:2.4 亿 kB/分钟(4 GB/秒)
  • 中等区域:4800 万 kB/分钟(800 MB/秒)
  • 较小区域:2400 万 kB/分钟(400 MB/秒)

pubsub.googleapis.com/regionalstreamingpullsubscriber

配额用量按流式传输到订阅者的 PubsubMessage 大小计算:

请注意,客户端库会尽可能使用 StreamingPull 操作。

每个区域内打开的 StreamingPull 连接数
  • 较大区域:同时可打开 72000 个连接
  • 中等区域每次可打开 48,000 个连接
  • 较小区域:同时可打开 24000 个连接

pubsub.googleapis.com/regionalstreamingpullconnections

在任何给定时间打开的 StreamingPull 连接数。 请参阅 StreamingPull

管理员操作 每分钟 6000 次(100 次操作/秒)

pubsub.googleapis.com/administrator

每次管理员操作(例如 GetTopicRequest)消耗一个配额单位。

Get*List*Create*Delete*Update*ModifyPushConfigSetIamPolicyGetIamPolicy TestIamPermissionsValidateSchemaValidateMessageCommitSchemaRollbackSchemaDeleteSchemaRevisionListSchemaRevisions、 和 DetachSubscription 管理员操作。

“正好一次”订阅所使用的消息数 每个区域启用的配送方式有
  • us-central1 中每分钟 100 万条消息
  • us-east1 中的每分钟消息数上限为 70 万条
  • us-west1 中每分钟 30 万条消息
  • 其他区域每分钟 18 万条消息

pubsub.googleapis.com/exactlyoncedeliveredmessagecount

配额用量基于 订阅者消耗的 PubsubMessage

已确认的消息数或截止时间已延长的消息数 在使用按区域启用仅传送一次的订阅时
  • us-central1 中每分钟 1000 万条消息
  • us-east1 中的每分钟消息数上限为 700 万条
  • us-west1 中每分钟 300 万条消息
  • 其他区域:每分钟 180 万条消息

pubsub.googleapis.com/exactlyonceackcount

配额用量按 AcknowledgeModifyAckDeadline 请求:

吞吐量配额单位

吞吐量配额使用量以 1 kB 为单位计量。1 kB 为 1000 个字节。例如,如果某个 PublishRequest 包含 105 条消息,每条消息的大小为 50 个字节,用户数据大小为 105 * 50 bytes = 5250 bytes,则配额使用量为 max(1kB, ceil(5250 bytes/1000)) = 6kB

资源限制

资源 限制
项目 10000 个主题
10000 个附加或分离的订阅
5000 个快照
10000 个架构
主题 10000 个附加的订阅
5000 个附加的快照
如果配置了主题消息保留功能,则发布到主题的消息可以自发布之时起在永久性存储中保留 31 天。
订阅 默认情况下,系统会保留未确认的消息 永久存储中 天(自发布之日起算)。使用 保留的消息的数量。
如果订阅者未使用订阅,订阅将过期。 默认有效期为 31 天。
架构 架构大小(definition 字段):300KB
每个架构的修订版本数:20
发布请求 10 MB(总大小)
1000 条消息
消息 消息大小(data 字段):10 MB
每条消息的特性数目:100
特性键大小:256 字节
特性值大小:1024 字节
StreamingPull 流 每个打开的流 10 MB/每秒
一元拉取响应 拉取响应中的消息数上限:1000
拉取响应的大小上限:10 MB
拉取/StreamingPull 消息 该服务可能会对每个连接的未完成 StreamingPull 消息总数施加限制。如果遇到此类限制,请提高您确认消息的速率并增加使用的连接数。
Acknowledge 和 ModifyAckDeadline 请求 512 KB(总大小)
排序键 如果消息具有排序键,则每个排序键的发布者吞吐量上限为 1 MBps。

使用服务账号获取更高配额

如果您将 Google Cloud CLI gcloud 工具与普通用户账号(即非服务账号)搭配使用,则系统会将 Pub/Sub 操作限制为适合手动操作的速率。超过此限制的费率将导致 RESOURCE_EXHAUSTED 错误。解决此问题的方案是确保您使用的是服务账号凭据。如果您 希望使用 gcloud CLI 中的凭据实现自动化, 激活服务账号 来实施 Pub/Sub 操作

使用位置端点来路由请求

如果您在特定区域有额外的配额,则可以将请求路由到 这些区域使用的是 位置 Pub/Sub 端点。 将消息发布到全球端点时,Pub/Sub 服务可能会将流量路由到配额不足的区域。

配额不匹配

发布或接收的消息小于 1000 字节时,可能会发生配额不匹配问题。例如:

  • 如果分别在不同的请求中发布 10 条 500 字节的消息,则发布者配额用量将为 10000 个字节。这是因为小于 1000 字节的消息会自动向上取整到下一个 1000 字节增量。

  • 如果您在单个拉取响应中收到这 10 条消息,则您的订阅者配额用量可能仅为 5 kB,因为系统会将每条消息的实际大小加总来确定总体配额。

  • 反之亦然。如果您在单个发布请求中发布多条消息,或者分别在不同的拉取请求中接收消息,则订阅者配额用量可能会大于发布者配额用量。