Cuotas y límites de Pub/Sub

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

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

Ve y administra cuotas

Para un proyecto determinado, puedes usar el IAM y panel de cuotas del administrador para 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 Supervisión

Atribución del uso de 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 el credenciales especificadas en la solicitud. El uso de la cuota no se cobra proyecto que contiene el recurso solicitado.

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

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

Debes tener el rol roles/serviceusage.serviceUsageConsumer o un rol personalizado con el permiso serviceusage.services.use en el proyecto que usarás para la atribución de la cuota.

En el siguiente ejemplo, se muestra cómo obtener una lista de suscripciones en el proyecto RESOURCE_PROJECT mientras se le cobra al administrador de operaciones en el proyecto QUOTA_PROJECT. Ejecutar el siguiente comando en tu 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 por el que quieres cobrar la cuota.

Ten en cuenta que, en Pub/Sub, el proyecto facturado siempre es 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 regionales se dividen en 3 tipos:

  • Regiones grandes: europe-west1, europe-west4, us-central1, us-east1, us-east4, us-west1 y us-west2
  • Regiones medianas: asia-east1, asia-northeast1, asia-southeast1, europe-west2, europe-west3
  • Regiones pequeñas: el resto de las regiones

Las cuotas de entrega “exactamente una vez” son específicas de cada región. Verifica los detalles de cada región en la siguiente tabla.

Cuota Límite de cuota predeterminado Descripción
Capacidad de procesamiento del publicador por región
  • 240,000,000 KB por minuto (4 GB/s) en regiones grandes
  • 48,000,000 KB por minuto (800 MB/s) en regiones medianas
  • 12,000,000 KB por minuto (200 MB/s) en regiones pequeñas

pubsub.googleapis.com/regionalpublisher

El uso de la cuota depende del tamaño de los PubsubMessage publicados:

Ten en cuenta que se pueden incluir varios mensajes en una sola solicitud de publicación, y no hay un cargo de cuota adicional por mensaje.

Capacidad de procesamiento del suscriptor de operaciones de extracción por región
  • 240,000,000 KB por minuto (4 GB/s) en regiones grandes
  • 48,000,000 KB por minuto (800 MB/s) en regiones medianas
  • 24,000,000 KB por minuto (400 MB/s) en regiones pequeñas

pubsub.googleapis.com/regionalsubscriber

El uso de la cuota depende del tamaño de los PubsubMessage publicados:

Capacidad de procesamiento de la confirmación de recepción por región
  • 240,000,000 KB por minuto (4 GB/s) en regiones grandes
  • 48,000,000 KB por minuto (800 MB/s) en regiones medianas
  • 24,000,000 KB por minuto (400 MB/s) en regiones pequeñas

pubsub.googleapis.com/regionalacknowledger

El uso de la cuota se basa en el tamaño de las solicitudes Acknowledge y ModifyAckDeadline:

Capacidad de procesamiento de las suscripciones de inserción por región
  • 26,400,000 KB por minuto (440 MB/s) en regiones grandes
  • 8,400,000 KB por minuto (140 MB/s) en regiones medianas
  • 2,400,000 KB por minuto (40 MB/s) en regiones pequeñas

pubsub.googleapis.com/regionalpushsubscriber

Para las solicitudes de entrega de envío realizadas al extremo de envío, el uso de la cuota depende del tamaño de los PubsubMessage enviados.

Suscripciones a BigQuery capacidad de procesamiento por región
  • 26,400,000 KB por minuto (440 MB/s) en regiones grandes
  • 8,400,000 KB por minuto (140 MB/s) en regiones medianas
  • 2,400,000 KB por minuto (40 MB/s) en regiones pequeñas

pubsub.googleapis.com/regionalpushbigquerysubscriber

En el caso de las solicitudes que se realizan a BigQuery, el uso de la cuota se basa en el tamaño de los PubsubMessage que se envían a BigQuery.

Suscripciones a Cloud Storage capacidad de procesamiento por región
  • 26,400,000 KB por minuto (440 MB/s) en regiones grandes
  • 8,400,000 KB por minuto (140 MB/s) en regiones medianas
  • 2,400,000 KB por minuto (40 MB/s) en regiones pequeñas

pubsub.googleapis.com/regionalpushcloudstoragesubscriber

Para las solicitudes realizadas a Cloud Storage, el uso de la cuota se basa en el tamaño de los PubsubMessage enviados a Cloud Storage.

Capacidad de procesamiento del suscriptor de StreamingPull por región
  • 240,000,000 KB por minuto (4 GB/s) en regiones grandes
  • 48,000,000 KB por minuto (800 MB/s) en regiones medianas
  • 24,000,000 KB por minuto (400 MB/s) en regiones pequeñas

pubsub.googleapis.com/regionalstreamingpullsubscriber

El uso de la cuota depende del tamaño de los PubsubMessage transmitidos al suscriptor:

Ten en cuenta que las bibliotecas cliente usan operaciones StreamingPull siempre que sea posible.

Cantidad de conexiones de StreamingPull abiertas por región
  • 72,000 conexiones abiertas a la vez en regiones grandes
  • 48,000 conexiones abiertas a la vez en regiones medianas
  • 24,000 conexiones abiertas a la vez en regiones pequeñas

pubsub.googleapis.com/regionalstreamingpullconnections

Cantidad de conexiones de StreamingPull abiertas en un momento determinado. Consulta StreamingPull.

Operaciones de administrador 6,000 por minuto (100 ops/s)

pubsub.googleapis.com/administrator

Se cobra cada operación de administrador, como GetTopicRequest, como una unidad en esta cuota.

Get*, List* y Create* Delete*, Update*, ModifyPushConfig, SetIamPolicy, GetIamPolicy, TestIamPermissions, ValidateSchema, ValidateMessage,CommitSchema,RollbackSchema, DeleteSchemaRevision, ListSchemaRevisions y DetachSubscription son de los administradores de Google Cloud.

Cantidad de mensajes consumidos de las suscripciones con la entrega exactamente una vez habilitada por región
  • 1,000,000 de mensajes por minuto en us-central1
  • 700,000 mensajes por minuto en us-east1
  • 300,000 mensajes por minuto en us-west1
  • 180,000 mensajes por minuto en otras regiones

pubsub.googleapis.com/exactlyoncedeliveredmessagecount

El uso de la cuota se basa en la cantidad de PubsubMessage consumidos por el suscriptor:

Cantidad de mensajes confirmados o cuyo plazo se extiende Cuando se usan suscripciones con la opción entrega “exactamente una vez” habilitada por región
  • 10,000,000 de mensajes por minuto en us-central1
  • 7,000,000 de mensajes por minuto en us-east1
  • 3,000,000 de mensajes por minuto en us-west1
  • 1,800,000 mensajes por minuto en otras regiones

pubsub.googleapis.com/exactlyonceackcount

El uso de la cuota se basa en la cantidad de IDs de confirmación de recepción en Acknowledge y Solicitudes ModifyAckDeadline:

Unidades de cuota de capacidad de procesamiento

Se mide el uso de cuotas de capacidad de procesamiento en unidades de 1 KB. 1 KB equivale a 1,000 bytes. Por ejemplo, en una PublishRequest con 105 mensajes de 50 bytes cada uno, el tamaño de los datos del usuario es 105 * 50 bytes = 5250 bytes, por lo que el uso de la cuota es max(1kB, ceil(5250 bytes/1000)) = 6kB.

Límites de recursos

Recurso Límites
Proyecto 10,000 temas
10,000 suscripciones adjuntas o desconectadas
5,000 instantáneas
10,000 esquemas
Tema 10,000 suscripciones adjuntas
5,000 instantáneas adjuntas
Si la retención de mensajes por temas los mensajes publicados en un tema se pueden retener de almacenamiento por hasta 31 días desde el momento de la publicación.
Suscripción De forma predeterminada, retiene los mensajes no confirmados en un almacenamiento persistente para 7 días desde el momento de la publicación. No hay límite para la cantidad de mensajes retenidos.
Si los suscriptores no usan una suscripción, se vence. El período de vencimiento predeterminado es de 31 días.
Esquema Tamaño del esquema (el campo definition): 300 KB
Revisiones por esquema: 20
Solicitud de publicación 10 MB (tamaño total)
1,000 mensajes
Mensaje Tamaño del mensaje (campo data): 10 MB
Atributos por mensaje: 100
Tamaño de la clave del atributo: 256 bytes
Tamaño del valor del atributo: 1,024 bytes
Transmisiones de StreamingPull 10 MB/s por transmisión abierta
Respuesta de extracción unaria Cantidad máxima de mensajes en la respuesta de extracción: 1,000
Tamaño máximo de la respuesta de extracción: 10 MB
Mensajes de Pull/StreamingPull El servicio podría imponer límites en la cantidad total de mensajes de StreamingPull pendientes por conexión. Si alcanzas esos límites, aumenta la tasa a la que se reconocen los mensajes y la cantidad de conexiones que usas.
Cómo confirmar y modificar solicitudes de ModifyAckPlazo 512 KB (tamaño total)
Claves de ordenamiento Si los mensajes tienen ordenar claves la capacidad de procesamiento máxima del publicador es de 1 Mbps para cada clave de ordenamiento.

Usa una cuenta de servicio para obtener cuotas más altas

Si utilizas la herramienta gcloud de Google Cloud CLI con una cuenta de usuario normal (es decir, cuenta que no es de servicio), las operaciones de Pub/Sub están limitadas a una tarifa que no son adecuados para operaciones manuales. Las tasas que excedan este límite generarán el error RESOURCE_EXHAUSTED. La solución es asegurarte de estar usando las credenciales de una cuenta de servicio. Si deseas usar credenciales de gcloud CLI para la automatización, activar una cuenta de servicio para tus operaciones de Pub/Sub.

Usa extremos de ubicación para enrutar las solicitudes

Si tienes cuota adicional en regiones particulares, puedes enrutar las solicitudes a estas regiones con Extremos locales de Pub/Sub. Cuando publicas mensajes en un extremo global, el servicio de Pub/Sub puede enrutar el tráfico a una región que no tiene una cuota suficiente.

Cuotas que no coinciden

Puede ocurrir que las cuotas no coincidan cuando los mensajes publicados o recibidos son de menos de 1,000 bytes. Por ejemplo:

  • Si publicas 10 mensajes de 500 bytes en solicitudes diferentes, el uso de cuota de tu publicador será de 10,000 bytes. Esto se debe a que los mensajes de menos de 1,000 bytes se redondean de forma automática al siguiente incremento de 1,000 bytes.

  • Si recibes esos 10 mensajes en una sola respuesta de extracción, tu uso de cuota de suscriptor podría ser de solo 5 KB, ya que se combina el tamaño real de cada mensaje para determinar la cuota general.

  • Lo opuesto también se cumple. El uso de la cuota de suscriptores podría superar el de la cuota de publicadores si publicas varios mensajes en una sola solicitud de publicación o recibes los mensajes en solicitudes de extracción diferentes.