Cuotas y límites de Pub/Sub

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Google Cloud usa cuotas para restringir la cantidad de recursos compartidos de Google Cloud que puedes usar. Cada cuota representa un recurso contable específico, como llamadas a la API a un servicio en particular, la cantidad de bytes enviados a un servicio en particular o la cantidad de conexiones de transmisión que usa el proyecto de forma simultánea.

Muchos servicios también tienen límites que no están relacionados con el sistema de cuotas. Estas son restricciones fijas, como los tamaños máximos de mensajes o la cantidad de recursos de Pub/Sub que puedes crear en un proyecto, que no se pueden aumentar ni disminuir.

Ver y administrar cuotas

Para un proyecto determinado, puedes usar el panel de cuotas de IAM y administración a fin de ver el uso y los límites de cuota actuales. También puedes usar este panel para hacer lo siguiente:

  • Reducir los límites de tu cuota
  • Iniciar un proceso para solicitar límites de cuota más altos

Para obtener más información sobre la supervisión y las alertas sobre el uso de la cuota, consulta Monitoring.

Atribución del uso de la cuota

Para la capacidad de procesamiento de suscriptores de envío, se cobra el uso de cuotas al proyecto que contiene la suscripción de envío. Este es el proyecto que aparece en el nombre de la suscripción.

Para todas las demás cuotas, el uso se cobra al proyecto asociado con las credenciales especificadas en la solicitud. El uso de la cuota no se cobra al proyecto que contiene el recurso solicitado.

Por ejemplo, si una cuenta de servicio en el proyecto A envía una solicitud de publicación para publicar en un tema del proyecto B, la cuota se cobra al proyecto A. En algunos casos, es posible que desees que el uso de la cuota se cobre en otro proyecto. Puedes usar el parámetro del sistema X-Goog-User-Project a fin de cambiar el proyecto para la atribución de cuotas. Para obtener más información sobre X-Goog-User-Project, consulta Parámetros del sistema.

Puedes usar la CLI de gcloud a fin de configurar el proyecto para la atribución de cuota de una solicitud específica. La CLI de gcloud envía el encabezado de la solicitud X-Goog-User-Project.

Debes tener la función roles/serviceusage.serviceUsageConsumer o una función personalizada con el permiso serviceusage.services.use en el proyecto que usarás para la atribución de cuotas.

En el siguiente ejemplo, se muestra cómo obtener una lista de suscripciones en el proyecto RESOURCE_PROJECT mientras se cobra la cuota de operaciones de administrador en el proyecto QUOTA_PROJECT. Ejecuta el siguiente comando en la terminal de Google Cloud CLI:

gcloud pubsub subscriptions list --project=
RESOURCE_PROJECT --billing-project=
QUOTA_PROJECT

Reemplaza QUOTA_PROJECT por el ID del proyecto de Google Cloud en el que deseas cobrar la cuota.

Ten en cuenta que en Pub/Sub, el proyecto facturado es siempre el que contiene el recurso. Solo puedes cambiar el proyecto para la atribución de cuota.

Cuotas de Pub/Sub

Las cuotas que se muestran en la siguiente tabla se pueden ver y editar por proyecto en el panel de cuotas de API y servicios.

Las cuotas de entrega "exactamente una vez" se dividen en 2 tipos:

  • Regiones grandes: europe-west1, us-central1, us-east1, us-west1
  • Regiones pequeñas: el resto de las regiones

Todas las demás cuotas regionales se dividen en 3 tipos:

  • Regiones grandes: europe-west1, europe-west4, us-central1, us-east1, us-east4/code>, us-west1
  • , us-west2
  • Medium regions: asia-east1, asia-northeast1
  • , asia-southeast1, europe-west2, europe-west3
  • Small regions: all other regions

Quota Default quota limit Description
Publisher throughput per region
  • 240,000,000 kB per minute (4 GB/s) in large regions
  • 48,000,000 kB per minute (800 MB/s) in medium regions
  • 12,000,000 kB per minute (200 MB/s) in small regions

pubsub.googleapis.com/regionalpublisher

Quota usage is based on the size of the published PubsubMessages:

Note that multiple messages can be included in a single publish request, and there is no additional quota charge per message.

Pull subscriber throughput per region
  • 240,000,000 kB per minute (4 GB/s) in large regions
  • 48,000,000 kB per minute (800 MB/s) in medium regions
  • 24,000,000 kB per minute (400 MB/s) in small regions

pubsub.googleapis.com/regionalsubscriber

Quota usage is based on the size of the returned PubsubMessages:

Acknowledger throughput per region
  • 240,000,000 kB per minute (4 GB/s) in large regions
  • 48,000,000 kB per minute (800 MB/s) in medium regions
  • 24,000,000 kB per minute (400 MB/s) in small regions

pubsub.googleapis.com/regionalacknowledger

Quota usage is based on the size of Acknowledge and ModifyAckDeadline requests:

Push and BigQuery subscriber throughput per region
  • 8,400,000 kB per minute (140 MB/s) in large regions
  • 4,200,000 kB per minute (70 MB/s) in medium regions
  • 2,400,000 kB per minute (40 MB/s) in small regions

pubsub.googleapis.com/regionalpushsubscriber

For push delivery requests made to the push endpoint, quota usage is based on the size of the PubsubMessages sent to the push endpoint.

StreamingPull subscriber throughput per region
  • 240,000,000 kB per minute (4 GB/s) in large regions
  • 48,000,000 kB per minute (800 MB/s) in medium regions
  • 24,000,000 kB per minute (400 MB/s) in small regions

pubsub.googleapis.com/regionalstreamingpullsubscriber

Quota usage is based on the size of the PubsubMessages streamed to the subscriber:

Note that Client Libraries use StreamingPull operations where possible.

Number of open StreamingPull connections per region
  • 72,000 open connections at a time in large regions
  • 48,000 open connections at a time in medium regions
  • 24,000 open connections at a time in small regions

pubsub.googleapis.com/regionalstreamingpullconnections

The number of open StreamingPull connections at any given time. See StreamingPull.

Administrator operations 6,000 per minute (100 ops/s)

pubsub.googleapis.com/administrator

Each administrator operation, such as GetTopicRequest, charges one unit against this quota.

Get*, List*, Create*, Delete*, Update*, ModifyPushConfig, SetIamPolicy, GetIamPolicy, TestIamPermissions, ValidateSchema, ValidateMessage, and DetachSubscription are administrator operations.

Number of messages consumed from subscriptions with exactly-once delivery enabled per region
  • 10,000,000 messages per minute in large regions
  • 1,000,000 messages per minute in small regions

pubsub.googleapis.com/exactlyoncedeliveredmessagecount

Quota usage is based on the number of PubsubMessages consumed by the subscriber:

Number of messages acknowledged or whose deadline is extended when using subscriptions with exactly-once delivery enabled per region
  • 100,000,000 operations per minute in large regions
  • 10,000,000 operations per minute in small regions

pubsub.googleapis.com/exactlyonceackcount

Quota usage is based on the number of acknowledgment IDs in Acknowledge and ModifyAckDeadline requests:

Throughput quota units

Throughput quota usage is measured in 1kB units. 1 kB is 1000 bytes. For example, in a PublishRequest with 105 messages of 50 bytes each, the user data size is 105 * 50 bytes = 5250 bytes, so the quota usage is max(1kB, ceil(5250 bytes/1000)) = 6kB.

Resource limits

Resource Limits
Project 10,000 topics
10,000 attached or detached subscriptions
5,000 snapshots
10,000 schemas
Topic 10,000 attached subscriptions
5,000 attached snapshots
If topic message retention is configured, messages published to a topic can be retained in persistent storage for up to 31 days from the time of publication.
Subscription By default, retains unacknowledged messages in persistent storage for 7 days from the time of publication. There is no limit on the number of retained messages.
If subscribers don't use a subscription, the subscription expires. The default expiration period is 31 days.
Schema Schema size (the definition field): 50KB
Publish request 10MB (total size)
1,000 messages
Message Message size (the data field): 10MB
Attributes per message: 100
Attribute key size: 256 bytes
Attribute value size: 1024 bytes
StreamingPull streams 10 MB/s per open stream
Pull/StreamingPull messages The service might impose limits on the total number of outstanding StreamingPull messages per connection. If you run into such limits, increase the rate at which you acknowledge messages and the number of connections you use.
Acknowledge and ModifyAckDeadline requests 512 KB (total size)
Ordering keys If messages have ordering keys, the maximum publisher throughput is 1 MBps for each ordering key.

Use a service account for higher quotas

If you use the Google Cloud CLI gcloud tool with a normal user account (that is, a non-service account), Pub/Sub operations are limited to a rate suitable for manual operations. Rates in excess of this limit results in the RESOURCE_EXHAUSTED error. The solution is to make sure that you are using service account credentials. If you wish to use credentials from the gcloud CLI for automation, activate a service account for your Pub/Sub operations.

Use regional endpoints to route requests

If you have additional quota in particular regions, you can route requests to these regions using regional Pub/Sub endpoints. When you publish messages to a global endpoint, the Pub/Sub service might route traffic to a region that does not have sufficient quota.

Quota mismatches

Quota mismatches can happen when published or received messages are smaller than 1000 bytes. For example:

  • If you publish 10 500-byte messages in separate requests, your publisher quota usage will be 10,000 bytes. This is because messages that are smaller than 1000 bytes are automatically rounded up to the next 1000-byte increment.

  • If you receive those 10 messages in a single pull response, your subscriber quota usage might be only 5 kB, since the actual size of each message is combined to determine the overall quota.

  • The inverse is also true. The subscriber quota usage might be greater than the publisher quota usage if you publish multiple messages in a single publish request or receive the messages in separate Pull requests.