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-west1
、europe-west4
、us-central1
、us-east1
、us-east4
、us-west1
、us-west2
- 中等区域:
asia-east1
、asia-northeast1
、asia-southeast1
、europe-west2
、europe-west3
- 较小区域:所有其他区域
“仅传送一次”传送配额因区域而异。请查看下表,了解各个区域的详细信息。
配额 | 默认配额限制 | 说明 |
---|---|---|
每个区域的发布者吞吐量 |
|
配额用量按发布的
请注意,单个发布请求中可以包含多条消息,系统不会再另外按每条消息计算配额。 |
每个区域的拉取订阅者吞吐量 |
|
配额用量按返回的
|
每个区域的 Acknowledger 吞吐量 |
|
配额用量按
|
每个区域的推送订阅吞吐量 |
|
对于向推送端点发出的推送传送请求,配额用量按发送到推送端点的 |
BigQuery 订阅 每个区域的吞吐量 |
|
对于向 BigQuery 发出的请求,配额用量按发送到 BigQuery 的 |
每个区域的 Cloud Storage 订阅吞吐量 |
|
对于向 Cloud Storage 发出的请求,配额用量按发送到 Cloud Storage 的 |
每个区域的 StreamingPull 订阅者吞吐量 |
|
配额用量按流式传输到订阅者的
请注意,客户端库会尽可能使用 StreamingPull 操作。 |
每个区域内打开的 StreamingPull 连接数 |
|
在任何给定时间打开的 StreamingPull 连接数。 请参阅 StreamingPull。 |
管理员操作 | 每分钟 6000 次(100 次操作/秒) |
每次管理员操作(例如 GetTopicRequest)消耗一个配额单位。
|
每个区域从启用了恰好一次传送的订阅中消耗的消息数 |
|
配额用量基于订阅者消耗的
|
在启用仅传送一次功能的情况下,每个区域内已确认或已延长截止期限的消息数量 |
|
配额用量按
|
吞吐量配额单位
吞吐量配额使用量以 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 天。 |
订阅 |
默认情况下,从发布时算起,未确认的消息可以在永久性存储空间中保留 7 天。保留的消息无数量限制。 如果订阅者没有使用订阅,该订阅将会过期。 默认有效期为 31 天。 |
架构 | 架构大小(definition 字段):300KB每个架构的修订次数:20 |
发布请求 | 10 MB(总大小) 1000 条消息 |
消息 | 消息大小(data 字段):10 MB每条消息的特性数目:100 特性键大小:256 字节 特性值大小:1024 字节 |
StreamingPull 流 | 每个打开的流 10 MBps |
一元拉取响应 |
拉取响应中的消息数量上限:1,000 拉取响应大小上限:10 MB |
拉取/StreamingPull 消息 | 该服务可能会对每个连接的未完成 StreamingPull 消息总数施加限制。如果遇到此类限制,请提高您确认消息的速率并增加使用的连接数。 |
Acknowledge 和 ModifyAckDeadline 请求 |
512 KB(总大小) |
排序键 | 如果消息具有排序键,则每个排序键的发布者吞吐量上限为 1 MBps。 |
Cloud Storage 存储桶对象 | 使用 Cloud Storage 导入主题时,存储桶中的对象数量上限为 5, 000 万。 |
使用服务账号可获得更高的配额
如果您将 Google Cloud CLI 工具与普通用户账号(即非服务账号)搭配使用,则系统会将 Pub/Sub 操作限制为适合手动操作的速率。超过此限制的速率将导致 RESOURCE_EXHAUSTED 错误。解决此问题的方案是确保您使用的是服务账号凭据。如果您希望使用 gcloud CLI 提供的凭据实现自动化,请为您的 Pub/Sub 操作激活服务账号。
使用位置端点路由请求
如果您在特定区域中有额外配额,则可以使用位置型 Pub/Sub 端点将请求路由到这些区域。将消息发布到全球端点时,Pub/Sub 服务可能会将流量路由到配额不足的区域。
配额不匹配
发布或接收的消息小于 1000 字节时,可能会发生配额不匹配问题。例如:
如果分别在不同的请求中发布 10 条 500 字节的消息,则发布者配额用量将为 10000 个字节。这是因为小于 1000 字节的消息会自动向上取整到下一个 1000 字节增量。
如果您在单个拉取响应中收到这 10 条消息,则您的订阅者配额用量可能仅为 5 kB,因为系统会将每条消息的实际大小加总来确定总体配额。
反之亦然。如果您在单个发布请求中发布多条消息,或者分别在不同的拉取请求中接收消息,则订阅者配额用量可能会大于发布者配额用量。