Sobre o número máximo de instâncias

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

  • cota de CPU regional dividida pela configuração de CPU do serviço.
  • cota de memória regional dividida pela configuração de memória do serviço.
  • cota de GPU regional, com ou sem redundância zonal, dividida pela configuração de GPU do serviço.

Por exemplo, uma cota de referência de 1.000 vCPUs ou 2.000 GiB de memória permitiria uma implantação usando 2 GiB de memória ou 1 CPU para especificar um máximo de 1.000 instâncias para um único serviço.

Essas cotas também são contabilizadas como uma soma de todos os recursos em uso na região em todos os recursos do Cloud Run. Você pode ter falhas ao escalonar verticalmente ou iniciar novas execuções de job se o uso total atingir um desses limites.

Na página de cotas do console, é possível conferir os limites totais de CPU, memória e GPU por cota de região para sua região.

Como aumentar a cota regional de valor de referência

Se você precisar de uma contagem total maior de CPU, memória ou GPU para a região em que o serviço do Cloud Run está implantado, solicite um aumento de cota.

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

A seção a seguir descreve as práticas recomendadas para configurar limites máximos de instância para seus serviços.

Valor máximo ideal de instância para serviços orientados a eventos

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

Uma boa regra prática é começar com um valor máximo de instâncias de três, monitorar falhas de invocação e aumentar esse valor, conforme necessário.

Tratar solicitações quando todas as instâncias estiverem ocupadas

Em circunstâncias normais, o serviço é escalonado criando novas instâncias para lidar com a carga de tráfego de entrada. No entanto, quando um limite máximo de instâncias estiver definido, será possível encontrar um cenário em que haja instâncias insuficientes para atender a carga de tráfego de entrada.

Nesse cenário, o Cloud Run tenta veicular uma nova solicitação de entrada por até 30 segundos:

  • Se uma instância concluir o processamento da solicitação durante esse período, ela poderá começar a processar a nova solicitação de entrada.
  • Se nenhuma instância se tornar disponível, a solicitação falhará.

O Cloud Run salva automaticamente os eventos destinados a serviços orientados a eventos até que a capacidade esteja disponível.

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

Ao especificar um limite máximo de instâncias, você está especificando um limite superior. Definir um limite alto não significa que seu serviço será escalonar verticalmente até o número especificado de instâncias. Isso significa apenas que o número de instâncias que coexistem a 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 escalonamento que o Cloud Run usa para atender à demanda de tráfego. Em geral, o Cloud Run prioriza o limite especificado em vez de escalonar verticalmente e potencialmente exceder o limite.

Lidar com picos de tráfego

Em alguns casos, como surtos de tráfego acelerado, o Cloud Run pode criar, por um curto período, mais instâncias do que o limite máximo especificado de instâncias. Se o serviço não puder tolerar esse comportamento temporário, considere uma margem de segurança e defina um valor máximo de instâncias mais baixo do que ele pode tolerar.

Implantações

Quando você implanta uma nova revisão, o Cloud Run migra o tráfego da revisão anterior para a nova. Como os limites máximos de instâncias são definidos para cada revisão de forma independente, é possível exceder temporariamente o limite especificado durante o período após a implantação.

Por exemplo, um serviço pode ter um limite máximo de 5 instâncias. Em circunstâncias normais, o serviço é escalonado até 5 instâncias para lidar com as requisições. Quando você implanta uma nova revisão, ela tem um limite máximo de 5 instâncias.

As solicitações que já estão sendo gerenciadas pela revisão anterior não são interrompidas quando você implanta uma nova revisão. Em vez disso, essas solicitações continuam a progredir. Novas solicitações de entrada serão tratadas pela revisão recém-implantada do 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 implantação da nova revisão. A quantidade de tempo necessária para que as instâncias da revisão anterior terminem depende do tempo necessário para que essas instâncias concluam o processamento de qualquer solicitação ativa. Esse é um fator adicional a ser levado em conta ao selecionar um limite de instâncias máximas apropriado.