Simultaneidade

As funções do Cloud Run são compatíveis com o processamento de várias solicitações simultâneas em uma única instância de função. Isso pode ser útil para evitar inicializações a frio, já que uma instância já aquecida pode processar várias solicitações simultaneamente, reduzindo assim a latência geral.

Quando a simultaneidade está ativada, as funções do Cloud Run não fornecem isolamento entre solicitações simultâneas processadas pela mesma instância da função. Nesses casos, é necessário garantir que o código da função seja seguro para execução simultânea. Observe as seguintes considerações sobre determinados ambientes de execução da linguagem:

  • O Node.js é inerentemente uma única linha de execução. Para aproveitar a simultaneidade, use o estilo de código assíncrono do JavaScript, que é idiomático no Node.js. Consulte Controle de fluxo assíncrono na documentação oficial do Node.js para mais detalhes.

  • Recomendamos começar com uma simultaneidade menor, como 8, e depois movê-la. Começar com uma simultaneidade muito alta pode levar a um comportamento intencional devido a restrições de recursos, como memória ou CPU.

  • Para o Python 3.8 e versões mais recentes, o suporte a alta simultaneidade por instância de função requer linhas de execução suficientes para processar a simultaneidade. Recomendamos que você defina uma variável de ambiente de execução para que o valor das linhas de execução seja igual ao valor de simultaneidade, por exemplo: THREADS=8

Por padrão, as instâncias de função gerenciam apenas uma solicitação por vez. É possível mudar esse comportamento por função definindo um valor de simultaneidade, conforme mostrado na próxima seção.

Definir um valor de simultaneidade

O valor de simultaneidade padrão é 1. É possível definir o valor de simultaneidade de uma função para substituir o valor padrão. O valor de simultaneidade representa o número máximo de solicitações simultâneas que uma única instância da função pode processar.

Um valor de simultaneidade maior que 1 faz com que seu código de função seja executado simultaneamente em uma única instância. O valor máximo de simultaneidade é 1.000 (embora recomendamos começar com um valor mais baixo e ir aumentando). Definir um valor de simultaneidade maior que 1 exige que uma função tenha uma ou mais vCPUs. Consulte Limites de memória para os valores padrão de memória e vCPU.

É possível definir a simultaneidade de uma função de uma das seguintes maneiras:

Definir a simultaneidade usando funções do Cloud Run

gcloud

É possível definir um valor de simultaneidade usando a gcloud CLI implantando uma função com a sinalização --concurrency:

gcloud functions deploy YOUR_FUNCTION_NAME \
--gen2 \
--concurrency=CONCURRENCY_VALUE \
FLAGS...

Em que CONCURRENCY_VALUE é o número máximo de solicitações simultâneas permitidas por instância do contêiner. Deixe a simultaneidade não especificada para receber o valor padrão do servidor.

Console

Para definir um valor de simultaneidade usando o console do Google Cloud, faça o seguinte:

  1. Acesse a página de visão geral das funções do Cloud Run no console do Google Cloud.
  2. Clique no nome da função para acessar a página Detalhes da função.
  3. Clique em Editar.
  4. Expanda a seção Ambiente de execução, build... no final da página e clique na guia Ambiente de execução.
  5. Em Simultaneidade, insira um valor de simultaneidade no campo chamado Máximo de solicitações simultâneas por instância.
  6. Clique em Próxima.
  7. Clique em Implantar.

    Essa é uma etapa necessária para que as alterações entrem em vigor.

Definir a simultaneidade usando o Cloud Run

gcloud

Para definir um valor de simultaneidade usando a CLI gcloud, atualize o serviço subjacente do Cloud Run e especifique a sinalização --concurrency:

gcloud run services update YOUR_FUNCTION_NAME --concurrency CONCURRENCY_VALUE

Em que CONCURRENCY_VALUE é o número máximo de solicitações simultâneas permitidas por instância do contêiner. Deixe a simultaneidade não especificada para receber o valor padrão do servidor.

Console

Para definir um valor de simultaneidade usando o console do Google Cloud, faça o seguinte:

  1. Acesse a página de visão geral das funções do Cloud Run no console do Google Cloud.
  2. Clique no nome da função para acessar a página Detalhes da função.
  3. No painel Com tecnologia do Cloud Run, clique no nome da sua função para acessar a página Detalhes do serviço do serviço do Cloud Run.
  4. Clique em Editar e implantar uma nova revisão na parte superior da página.
  5. Abra a guia Contêiner.
  6. Insira um valor de simultaneidade no campo Máximo de solicitações simultâneas por instância.

    Se o valor fornecido para Máximo de solicitações simultâneas por instância for maior que 1, role a página para baixo e abra a seção Contêineres. Verifique se o campo CPU contém um valor de 1 ou mais.

  7. Clique em Implantar.

    Essa é uma etapa necessária para que as alterações entrem em vigor.

As funções do Cloud Run se baseiam no suporte de simultaneidade fornecido pelo Cloud Run. Para saber mais, consulte Máximo de solicitações simultâneas por instância (serviços) na documentação do Cloud Run.