配额和限制

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

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

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

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

要修改多个配额,请使用 IAM 和管理配额信息中心

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

  • 减少配额。
  • 启动申请更高配额限制的流程。

配额单位

已衡量的每个请求或响应都会计为 1 KB 或者请求/响应总大小中的较大者。

每个请求或响应的配额使用情况会向上舍入到最接近的 1 KB 增量。设想一个发布请求包含 100 条消息,每条消息的大小为 50 个字节,并且主题名称长度等于 30 个字节。请求的配额使用量为 max(1, ceil(5030/1000)) = 6kB

项目使用情况归因

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

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

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

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

配额限制

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

配额 默认配额限制 说明
发布者吞吐量 每分钟 60,000,000 KB(1,000 MB/秒) 配额使用量基于 PublishRequest 所包含的消息的大小:

请注意,多条消息可纳入单个发布请求中,并且每条消息不会产生额外的配额费用。

订阅者吞吐量 每分钟 120,000,000 KB(2,000 MB/秒) 对于拉取订阅,配额使用量基于 Pull 回应的大小,以包含:

此外,AcknowledgeModifyAckDeadline 请求会纳入此配额中:

  • AcknowledgeRequest (RPC)
  • ModifyAckDeadlineRequest (RPC)
    推送订阅者吞吐量 每分钟 6,000,000 KB(100 MB/秒) 对于向推送端点发出的推送传送请求,配额使用量基于向推送端点发出的请求的大小。
    StreamingPull 订阅者吞吐量 每分钟 120,000,000 KB(2000 MB/秒) 配额使用量基于 StreamingPullResponses 的大小:

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

    打开的 StreamingPull 连接数 一次可打开 30,000 个连接 在任何给定时间打开的 StreamingPull 连接数。请参阅 StreamingPull
    StreamingPull 连接速率 每分钟 6,000,000 个连接 打开新的 StreamingPull 连接的速率。请参阅 StreamingPull
    管理员操作 每分钟 6,000 次(100 次操作/秒) 每个管理员操作(例如 GetTopicRequest)都会将一个单位计入此配额。

    通常,Get*, List*, Create*, Delete*, ModifyPushConfig, SetIamPolicy, GetIamPolicyTestIamPermissions 包含一组管理操作。

    资源限制

    资源 限制
    项目 10,000 个主题
    10,000 个订阅
    主题 10,000 个附加订阅
    5,000 个附加快照
    订阅 从发布时算起,未确认的消息可以在永久性存储空间中保留 7 天。保留的消息无数量限制。
    系统可能会自动删除在 31 天内未检测到其客户端在线状态的订阅。检测在线状态的途径包括 PullAcknowledge 等调用和成功的推送操作。
    发布请求 10MB(总大小)
    1,000 条消息
    消息 消息大小(data 字段):10MB(请求大小上限)
    每条消息的属性数目:100
    属性键大小:256 字节
    属性值大小:1024 字节
    推送传送消息 未完成的消息受以下两种订阅限制的约束:
    • 10 MB(此限制适用于所有未完成消息的大小总和,包括消息数据和属性)
    • 共有 1000 条未完成消息
    如果您的端点快速响应(快于 100 毫秒),则这些限制不会生效。请参阅推送订阅者指南
    StreamingPull 流 每个打开的流每秒 10 MB
    拉取/StreamingPull 消息 该服务可能会对每个连接的未完成 StreamingPull 消息总数施加限制。如果遇到此类限制,请提高您确认消息的速率以及使用的连接数。

    提示和警告

    大量操作

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

    配额不匹配

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

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

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

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

    此页内容是否有用?请给出您的反馈和评价:

    发送以下问题的反馈:

    此网页
    Cloud Pub/Sub 文档