Acerca do número máximo de instâncias

Por predefinição, os serviços do Cloud Run têm um número máximo de instâncias determinado pelo limite mais baixo das seguintes quotas relevantes. O limite máximo para cada região também é afetado pela configuração de CPU e memória do seu serviço do Cloud Run. Especificamente, o número máximo de instâncias disponíveis para o seu serviço é o mínimo de cada um dos seguintes:

  • Base da quota de limite de instâncias regional dividida pelo múltiplo pedido de 1 CPU
  • Base da quota de limite de instâncias regionais dividida pelo múltiplo pedido de memória de 2 GB
  • Quota de CPU regional dividida pela configuração de CPU para o serviço.
  • Quota de memória regional dividida pela configuração de memória do serviço.
  • Quota de GPU regional, com ou sem redundância zonal, dividida pela configuração de GPU para o serviço.

Por exemplo, uma quota de limite de instâncias de base de 1000 instâncias com 4 GB de memória ou 2 CPUs e um limite de 2000 vCPUs e um limite de 4000 GiBy tem um limite efetivo de 500.

Pode ver a quota de limite de instâncias de base por região para a sua região na página de quotas na consola.

Como aumentar a quota regional de base

Se precisar de um número máximo de instâncias superior para a região na qual o seu serviço do Cloud Run está implementado, pode pedir um aumento da quota.

Práticas recomendadas para definir o número máximo de instâncias

A secção seguinte descreve as práticas recomendadas para configurar os limites máximos de instâncias para os seus serviços.

Valor máximo ideal de instâncias para serviços orientados por eventos

Os serviços orientados por eventos, como as funções, podem sofrer picos de tráfego esporádicos com base nos eventos recebidos. Para determinar um valor máximo ideal para instâncias destes serviços, tem de considerar fatores como o tempo de invocação do serviço, a invocação média esperada, a frequência de invocação máxima e a tolerância a falhas para falhas de invocação.

Uma boa regra geral é começar com um valor de instâncias máximas de 3 e, em seguida, monitorizar as falhas de invocação e ajustar o valor de instâncias máximas para cima, conforme necessário.

Processar pedidos quando todas as instâncias estão ocupadas

Em circunstâncias normais, o seu serviço é dimensionado através da criação de novas instâncias para processar a carga de tráfego recebida. No entanto, quando define um limite máximo de instâncias, pode deparar-se com um cenário em que existem instâncias insuficientes para satisfazer a carga de tráfego recebido.

Nesse cenário, o Cloud Run tenta publicar um novo pedido de entrada durante um máximo de 30 segundos:

  • Se uma instância terminar de processar o respetivo pedido durante este período, pode começar a processar o novo pedido de entrada.
  • Se nenhuma instância ficar disponível, o pedido falha.

O Cloud Run guarda automaticamente os eventos destinados a serviços orientados por eventos até que haja capacidade disponível.

Limites máximos de instâncias que excedem a capacidade de escalabilidade do Cloud Run

Quando especifica um limite máximo de instâncias, está a especificar um limite superior. A definição de um limite elevado não significa que o seu serviço seja dimensionado até ao número de instâncias especificado. Significa apenas que o número de instâncias que coexistem em qualquer momento não deve exceder o limite.

Além disso, definir um limite máximo de instâncias pode afetar as estratégias de escalabilidade que o Cloud Run usa para satisfazer a sua procura de tráfego. Em geral, o Cloud Run dá prioridade ao cumprimento do limite especificado em vez de aumentar a escala e potencialmente exceder o limite.

Lide com picos de tráfego

Em alguns casos, como picos de tráfego rápidos, o Cloud Run pode, durante um curto período, criar mais instâncias do que o limite máximo de instâncias especificado. Se o seu serviço não tolerar este comportamento temporário, recomendamos que tenha em conta uma margem de segurança e defina um valor máximo de instâncias inferior ao que o seu serviço tolera.

Implementações

Quando implementa uma nova revisão, o Cloud Run migra o tráfego da revisão anterior para a nova. Uma vez que os limites máximos de instâncias são definidos para cada revisão de forma independente, pode exceder temporariamente o limite especificado durante o período após a implementação.

Por exemplo, um serviço pode ter um limite máximo de instâncias de 5. Em circunstâncias normais, o serviço é dimensionado até 5 instâncias à medida que processa pedidos. Quando implementa uma nova revisão, esta tem o seu próprio limite de instâncias máximo de 5.

Os pedidos que já estão a ser processados pela revisão anterior não são interrompidos quando implementa uma nova revisão. Em alternativa, estes pedidos continuam a progredir. Os novos pedidos recebidos vão ser processados pela revisão implementada recentemente do seu serviço.

Assim, o serviço no exemplo anterior pode ter até 10 instâncias no total (5 para cada revisão) durante o período após a implementação da nova revisão. O tempo necessário para terminar as instâncias da revisão anterior depende do tempo necessário para que essas instâncias terminem o processamento de quaisquer pedidos ativos. Este é um fator adicional a ter em conta quando seleciona um limite máximo de instâncias adequado.