Simultaneidade
O Cloud Functions (2nd gen) é compatível 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, o Cloud Functions (2nd gen) não fornece 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.
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 menor e continuar 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 para uma função de uma das seguintes maneiras:
- Cloud Functions: CLI gcloud ou console do Google Cloud.
- Cloud Run: CLI gcloud ou console do Google Cloud.
Definir a simultaneidade usando o Cloud Functions
gcloud
É possível definir um valor de simultaneidade usando a CLI gcloud implantando uma
função de segunda geração com o
flag
--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:
- Acesse a página de visão geral do Cloud Functions no console do Google Cloud.
- Clique no nome da função para acessar a página Detalhes da função.
- Clique em Editar.
- Expanda a seção Ambiente de execução, build... no final da página e clique na guia Ambiente de execução.
- Em Simultaneidade, insira um valor de simultaneidade no campo chamado Máximo de solicitações simultâneas por instância.
- Clique em Próxima.
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:
- Acesse a página de visão geral do Cloud Functions no console do Google Cloud.
- Clique no nome da função para acessar a página Detalhes da função.
- 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.
- Clique em Editar e implantar uma nova revisão na parte superior da página.
- Abra a guia Contêiner.
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.
Clique em Implantar.
Essa é uma etapa necessária para que as alterações entrem em vigor.
O Cloud Functions 2ª geração tem como base o 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.