配额和限制

本文档提供有关 Pub/Sub 配额和资源限制的信息。

如需详细了解如何跟踪配额(例如主题或订阅利用率),请参阅监控

查看配额用量和管理配额限制

对于一个给定项目,您可以使用 “API 和服务”配额信息中心来查看当前配额和用量。您也可以用此信息中心修改配额,每次修改一项。

如需修改多项配额,请使用 “IAM 和管理”配额信息中心

您可以使用上述任一信息中心执行以下操作:

  • 减少配额。
  • 申请更高配额限制。

项目用量归因

对于推送订阅者吞吐量,系统会将配额用量计入包含相应推送订阅的项目。

对于以下配额,系统会将用量计入与调用者凭据关联的项目,而不是计入包含所请求资源的项目(即主题或订阅名称中显示的项目):

  • 发布者吞吐量
  • 订阅者吞吐量
  • 管理员操作

例如:如果项目 A 中的服务帐号发送一个发布请求,以发布到项目 B 中的主题,系统会将此请求计入项目 A 的配额。每个请求都包含凭据,其中含有项目 ID。

配额限制

“API 和服务”配额信息中心中可以按项目查看和修改下表中列出的配额。

地区配额分为 2 种类型:

  • 较大地区:europe-west1us-central1us-east1
  • 较小地区:所有其他地区

配额 默认配额限制 说明
每个地区的发布者吞吐量
  • 较大地区:1200 万 kB/分钟(200 MB/秒)
  • 较小地区:300 万 kB/分钟(50 MB/秒)
配额用量按发布的 PubsubMessage 大小计算:

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

如果消息具有排序键,则发布者吞吐量上限为每个排序键每秒 1 MB。

每个地区的拉取订阅者吞吐量
  • 较大地区:2400 万 kB/分钟(400 MB/秒)
  • 较小地区:600 万 kB/分钟(100 MB/秒)
配额用量按返回的 PubsubMessage 大小计算:
每个地区的 Acknowledger 吞吐量
  • 较大地区:2400 万 kB/分钟(400 MB/秒)
  • 较小地区:600 万 kB/分钟(100 MB/秒)
配额用量按 AcknowledgeModifyAckDeadline 请求的大小计算:
每个地区的推送订阅者吞吐量
  • 较大地区:120 万 kB/分钟(20 MB/秒)
  • 较小地区:30 万 kB/分钟(5 MB/秒)
对于向推送端点发出的推送传送请求,配额用量按发送到推送端点的 PubsubMessage 大小计算。
每个地区的 StreamingPull 订阅者吞吐量
  • 较大地区:2400 万 kB/分钟(400 MB/秒)
  • 较小地区:600 万 kB/分钟(100 MB/秒)
配额用量按流式传输到订阅者的 PubsubMessage 大小计算:

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

每个地区的打开的 StreamingPull 连接数
  • 较大地区:同时可打开 24000 个连接
  • 较小地区:同时可打开 6000 个连接
在任何给定时间打开的 StreamingPull 连接数。 请参阅 StreamingPull
管理员操作 每分钟 6000 次(100 次操作/秒) 每次管理员操作(例如 GetTopicRequest)消耗一个配额单位。

Get*List*Create*Delete*ModifyPushConfigSetIamPolicyGetIamPolicyTestIamPermissionsDetachSubscription 属于管理员操作。

吞吐量配额单位

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

资源限制

资源 限制
项目 10000 个主题
10000 个附加或已分离的订阅
5000 个快照
主题 10000 个附加订阅
5000 个附加快照
订阅 从发布时算起,未确认的消息可以在永久性存储空间中保留 7 天。保留的消息无数量限制。
系统可能会自动删除在 31 天内未检测到其客户端在线状态的订阅。检测在线状态的途径包括 PullAcknowledge 等调用和成功的推送操作。
发布请求 10 MB(总大小)
1000 条消息
消息 消息大小(data 字段):10 MB
每条消息的特性数目:100
特性键大小:256 字节
特性值大小:1024 字节
推送未完成消息 3,000 * N,其中 N 是发布地区的数量。如需了解详情,请参阅使用推送订阅
StreamingPull 流 每个打开的流 10 MB/每秒
拉取/StreamingPull 消息 该服务可能会对每个连接的未完成 StreamingPull 消息总数施加限制。如果遇到此类限制,请提高您确认消息的速率并增加使用的连接数。

提示和提醒

大量操作

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

配额不匹配

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

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

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

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