Quotas e limites do Pub/Sub

Google Cloud usa quotas para restringir a quantidade de um determinado recurso partilhado Google Cloud que pode usar. Cada quota representa um recurso contabilizável específico, como chamadas API para um determinado serviço, o número de bytes enviados para um determinado serviço ou o número de ligações de streaming usadas em simultâneo pelo seu projeto.

Muitos serviços também têm limites que não estão relacionados com o sistema de quotas. Estas são restrições fixas, como os tamanhos máximos das mensagens ou o número de recursos do Pub/Sub que pode criar num projeto, que não podem ser aumentadas nem diminuídas.

Veja e faça a gestão de quotas

Para um determinado projeto, pode usar o painel de controlo de quotas de IAM e de administrador para ver os limites e a utilização atuais da quota. Também pode usar este painel de controlo para fazer o seguinte:

  • Reduza os limites de quotas
  • Inicie um processo para se candidatar a limites de quota mais elevados

Para mais informações sobre a monitorização e os alertas relativos à utilização da sua quota, consulte o artigo Monitorização.

Atribuição da utilização da quota

Para a taxa de transferência de subscritores push, a utilização da quota é cobrada ao projeto que contém a subscrição push. Este é o projeto que aparece no nome da subscrição.

Para todas as outras quotas, a utilização é cobrada ao projeto associado às credenciais especificadas no pedido. A utilização da quota não é cobrada ao projeto que contém o recurso pedido.

Por exemplo: se uma conta de serviço no projeto A enviar um pedido de publicação para publicar num tópico no projeto B, a quota é cobrada ao projeto A. Em alguns casos, pode querer que a utilização da quota seja cobrada a outro projeto. Pode usar o parâmetro do sistema X-Goog-User-Project para alterar o projeto para atribuição de quota. Para mais informações sobre X-Goog-User-Project, consulte Parâmetros do sistema.

Pode usar a CLI gcloud para definir o projeto para atribuição de quota para um pedido específico. A CLI gcloud envia o cabeçalho do pedido X-Goog-User-Project.

Tem de ter a função roles/serviceusage.serviceUsageConsumer ou uma função personalizada com a autorização serviceusage.services.use no projeto que vai usar para a atribuição de quota.

O exemplo seguinte mostra como obter uma lista de subscrições no projeto RESOURCE_PROJECT ao mesmo tempo que cobra a quota de operações de administrador em função do projeto QUOTA_PROJECT. Execute o seguinte comando no terminal da CLI do Google Cloud:

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

Substitua QUOTA_PROJECT pelo ID do Google Cloud projeto em relação ao qual quer cobrar a quota.

Tenha em atenção que, no Pub/Sub, o projeto faturado é sempre o que contém o recurso. Só pode alterar o projeto para a atribuição de quota.

Quotas do Pub/Sub

As quotas indicadas na tabela seguinte podem ser vistas e editadas por projeto no painel de controlo de quotas de APIs e serviços.

As quotas regionais estão divididas em 3 tipos:

  • Regiões grandes: europe-west1, europe-west4, us-central1, us-east1, us-east4, us-west1 e us-west2
  • Regiões médias: asia-east1, asia-northeast1, asia-southeast1, europe-west2 e europe-west3
  • Regiões pequenas: todas as outras regiões

As quotas de entrega exatamente uma vez são específicas da região. Consulte os detalhes de cada região na tabela seguinte.

Quota Limite de quota predefinido Descrição
Débito do publicador por região
  • 240 000 000 kB por minuto (4 GB/s) em regiões grandes
  • 48 000 000 KB por minuto (800 MB/s) em regiões médias
  • 12 000 000 kB por minuto (200 MB/s) em regiões pequenas

pubsub.googleapis.com/regionalpublisher

A utilização da quota baseia-se no tamanho dos PubsubMessages publicados:

É possível incluir várias mensagens num único pedido de publicação, e não existe um custo de quota adicional por mensagem. O tamanho da mensagem, conforme calculado para fins de utilização da quota, também inclui o campo message_id gerado automaticamente.

Extraia o débito de subscrições por região
  • 240 000 000 kB por minuto (4 GB/s) em regiões grandes
  • 48 000 000 KB por minuto (800 MB/s) em regiões médias
  • 24 000 000 KB por minuto (400 MB/s) em regiões pequenas

pubsub.googleapis.com/regionalsubscriber

A utilização da quota baseia-se no tamanho dos PubsubMessages devolvidos:

O tamanho da mensagem, calculado para efeitos de utilização da quota, também inclui o campo message_id gerado automaticamente.

Débito de confirmações por região
  • 240 000 000 kB por minuto (4 GB/s) em regiões grandes
  • 48 000 000 KB por minuto (800 MB/s) em regiões médias
  • 24 000 000 KB por minuto (400 MB/s) em regiões pequenas

pubsub.googleapis.com/regionalacknowledger

A utilização da quota baseia-se no tamanho dos pedidos Acknowledge e ModifyAckDeadline:

Débito das subscrições de emissão por região
  • 26 400 000 kB por minuto (440 MB/s) em regiões grandes
  • 8 400 000 KB por minuto (140 MB/s) em regiões médias
  • 2 400 000 KB por minuto (40 MB/s) em regiões pequenas

pubsub.googleapis.com/regionalpushsubscriber

Para pedidos de fornecimento push feitos ao ponto final push, a utilização da quota baseia-se no tamanho dos PubsubMessages enviados para o ponto final push.

Subscrições do BigQuery débito por região
  • 240 000 000 kB por minuto (4 GB/s) em regiões grandes
  • 48 000 000 KB por minuto (800 MB/s) em regiões médias
  • 12 000 000 kB por minuto (200 MB/s) em regiões pequenas

pubsub.googleapis.com/regionalpushbigquerysubscriber

Para pedidos feitos ao BigQuery, a utilização da quota baseia-se no tamanho dos PubsubMessages enviados para o BigQuery.

Subscrições do Cloud Storage débito por região
  • 240 000 000 kB por minuto (4 GB/s) em regiões grandes
  • 48 000 000 KB por minuto (800 MB/s) em regiões médias
  • 12 000 000 kB por minuto (200 MB/s) em regiões pequenas

pubsub.googleapis.com/regionalpushcloudstoragesubscriber

Para pedidos feitos ao Cloud Storage, a utilização da quota baseia-se no tamanho dos PubsubMessages enviados para o Cloud Storage.

Débito do subscritor StreamingPull por região
  • 240 000 000 kB por minuto (4 GB/s) em regiões grandes
  • 48 000 000 KB por minuto (800 MB/s) em regiões médias
  • 24 000 000 KB por minuto (400 MB/s) em regiões pequenas

pubsub.googleapis.com/regionalstreamingpullsubscriber

A utilização da quota baseia-se no tamanho dos PubsubMessages transmitidos para o subscritor:

As bibliotecas cliente usam operações StreamingPull sempre que possível.

Número de ligações StreamingPull abertas por região
  • 72 000 ligações abertas em simultâneo em grandes regiões
  • 48 000 ligações abertas em simultâneo em regiões médias
  • 24 000 ligações abertas em simultâneo em pequenas regiões

pubsub.googleapis.com/regionalstreamingpullconnections

O número de ligações StreamingPull abertas em qualquer altura. Consulte StreamingPull.

Operações de administrador 6000 por minuto (100 operações/s)

pubsub.googleapis.com/administrator

Cada operação de administrador, como GetTopicRequest, cobra uma unidade em relação a esta quota.

Get*, List*, Create*, Delete*, Update*, ModifyPushConfig, SetIamPolicy, GetIamPolicy, TestIamPermissions, ValidateSchema, ValidateMessage,CommitSchema,RollbackSchema, DeleteSchemaRevision, ListSchemaRevisions, e DetachSubscription são operações de administrador.

Número de mensagens consumidas de subscrições com a entrega exatamente uma vez ativada por região
  • 1 000 000 de mensagens por minuto em us-central1
  • 700 000 mensagens por minuto em us-east1
  • 300 000 mensagens por minuto em us-west1
  • 180 000 mensagens por minuto noutras regiões

pubsub.googleapis.com/exactlyoncedeliveredmessagecount

A utilização da quota baseia-se no número de PubsubMessages consumidos pelo subscritor:

Número de mensagens reconhecidas ou cujo prazo é prolongado quando usa subscrições com a entrega exatamente uma vez ativada por região
  • 10 000 000 de mensagens por minuto em us-central1
  • 7 000 000 de mensagens por minuto em us-east1
  • 3 000 000 de mensagens por minuto em us-west1
  • 1 800 000 mensagens por minuto noutras regiões

pubsub.googleapis.com/exactlyonceackcount

A utilização da quota baseia-se no número de IDs de confirmação nos pedidos Acknowledge e ModifyAckDeadline:

Unidades de quota de débito

A utilização da quota de débito é medida em unidades de 1 KB. 1 kB equivale a 1000 bytes. Por exemplo, numa PublishRequest com 105 mensagens de 50 bytes cada, o tamanho dos dados do utilizador é 105 * 50 bytes = 5250 bytes, pelo que a utilização da quota é max(1kB, ceil(5250 bytes/1000)) = 6kB.

Limites de recursos

Recurso Limites
Projeto 10 000 tópicos
10 000 subscrições anexadas ou desanexadas
5000 capturas instantâneas
10 000 esquemas
Tópico 10 000 subscrições anexadas
5000 instantâneos anexados
Se a retenção de mensagens de tópicos estiver configurada, as mensagens publicadas num tópico podem ser retidas no armazenamento persistente durante um período máximo de 31 dias a partir do momento da publicação.
Subscrição Por predefinição, mantém as mensagens não reconhecidas no armazenamento persistente durante 7 dias a partir do momento da publicação. Não existe limite para o número de mensagens retidas.
Se os subscritores não usarem uma subscrição, esta expira. O período de validade predefinido é de 31 dias.
Esquema Tamanho do esquema (o campo definition): 300 KB
Revisões por esquema: 20
Pedido de publicação 10 MB (tamanho total)
1000 mensagens
Mensagem Tamanho da mensagem (o campo data): 10 MB
Atributos por mensagem: 100
Tamanho da chave do atributo: 256 bytes
Tamanho do valor do atributo: 1024 bytes
Streams StreamingPull 10 MBps por stream aberta
Resposta de obtenção unária Número máximo de mensagens na resposta Pull: 1000
Tamanho máximo da resposta Pull: 10 MB
Mensagens Pull/StreamingPull O serviço pode impor limites ao número total de mensagens StreamingPull pendentes por ligação. Se se deparar com estes limites, aumente a taxa à qual confirma a receção de mensagens e o número de ligações que usa.
Confirme e modifique os pedidos de AckDeadline 512 KB (tamanho total)
Encomendar chaves Se as mensagens tiverem chaves de ordenação, a taxa de transferência máxima do publicador é de 1 MBps para cada chave de ordenação.
Objetos do contentor do Cloud Storage Quando usar tópicos de importação do Cloud Storage, o limite para o número de objetos num contentor é de 50 milhões.

Use uma conta de serviço para quotas mais elevadas

Se usar a ferramenta Google Cloud CLI com uma conta de utilizador normal (ou seja, uma conta que não seja de serviço), as operações do Pub/Sub estão limitadas a uma taxa adequada para operações manuais. As taxas que excedam este limite resultam no erro RESOURCE_EXHAUSTED. A solução é certificar-se de que está a usar credenciais da conta de serviço. Se quiser usar credenciais da CLI gcloud para automatização, ative uma conta de serviço para as suas operações do Pub/Sub.

Use pontos finais de localização para encaminhar pedidos

Se tiver uma quota adicional em regiões específicas, pode encaminhar pedidos para estas regiões através de pontos finais do Pub/Sub baseados na localização. Quando publica mensagens num ponto final global, o serviço Pub/Sub pode encaminhar o tráfego para uma região que não tenha quota suficiente.

Não correspondências de quotas

As incompatibilidades de quotas podem ocorrer quando as mensagens publicadas ou recebidas são inferiores a 1000 bytes. Por exemplo:

  • Se publicar 10 mensagens de 500 bytes em pedidos separados, a sua utilização da quota do publicador é de 10 000 bytes. Isto deve-se ao facto de as mensagens com menos de 1000 bytes serem automaticamente arredondadas para o incremento de 1000 bytes seguinte.

  • Se receber essas 10 mensagens numa única resposta de obtenção, a utilização da quota de subscritores pode ser apenas de 5 kB, uma vez que o tamanho real de cada mensagem é combinado para determinar a quota geral.

  • O inverso também é verdadeiro. A utilização da quota de subscritores pode ser superior à utilização da quota de publicadores se publicar várias mensagens num único pedido de publicação ou receber as mensagens em pedidos de obtenção separados.