No Lambda, simultaneidade corresponde ao número de solicitações em andamento que a função está processando, no momento. Há dois tipos de controle de simultaneidade disponíveis:
-
Simultaneidade reservada: representa o número máximo de instâncias simultâneas alocadas para a função. Quando uma função tem simultaneidade reservada, nenhuma outra função pode usar essa simultaneidade. A simultaneidade reservada é útil para garantir que suas funções mais críticas sempre tenham simultaneidade suficiente para lidar com as solicitações recebidas. Configurar a simultaneidade reservada para uma função não acarreta cobranças adicionais.
-
Simultaneidade provisionada: é o número de ambientes de execução inicializados previamente alocados para a função. Esses ambientes de execução estão prontos para responder imediatamente às solicitações de função de entrada. A simultaneidade provisionada é útil para reduzir as latências de inicialização a frio para funções. A configuração da simultaneidade provisionada gera cobranças na sua Conta da AWS.
Este tópico detalha como gerenciar e configurar a simultaneidade reservada. Para uma visão geral conceitual desses dois tipos de controles de simultaneidade, consulte Simultaneidade reservada e simultaneidade provisionada. Para obter informações, sobre a configuração da simultaneidade provisionada, consulte Configurar a simultaneidade provisionada para uma função.
nota
As funções do Lambda vinculadas a um mapeamento da origem do evento do Amazon MQ têm uma simultaneidade máxima padrão. Para o Apache Active MQ, o número máximo de instâncias simultâneas é 5. Para o Rabbit MQ, o número máximo de instâncias simultâneas é 1. Definir a simultaneidade reservada ou provisionada para a função não altera esses limites. Para solicitar um aumento na simultaneidade máxima padrão ao usar o Amazon MQ, entre em contato com Suporte.
Seções
Configurar a simultaneidade reservada
Você pode definir configurações de simultaneidade reservada para uma função usando o console do Lambda ou a API do Lambda.
Para reservar simultaneidade para uma função (console)
Abra a página Funções
do console do Lambda. -
Escolha a função para a qual você deseja reservar a simultaneidade.
-
Escolha Configuration (Configuração) e escolha (Concurrency (Simultaneidade).
-
Em Concurrency (Simultaneidade), selecione Edit (Editar).
-
Selecione Reserve concurrency (Reservar simultaneidade). Insira a quantidade de simultaneidade para reservar para a função.
-
Escolha Salvar.
Você pode reservar até o valor da simultaneidade da conta não reservada menos 100. As 100 unidades restantes de simultaneidade se destinam a funções que não estão usando simultaneidade reservada. Por exemplo, se sua conta tiver um limite de simultaneidade de 1 mil, você não poderá reservar todas as 1 mil unidades de simultaneidade para uma única função.
![Ocorrerá um erro se você tentar reservar simultaneidade em excesso.](images/concurrency-reserve-over-limit.png)
Reservar simultaneidade para uma função afeta o grupo de simultaneidades disponíveis para outras funções. Por exemplo, se você reservar 100 unidades de simultaneidade para function-a
, outras funções da sua conta deverão compartilhar as 900 unidades restantes de simultaneidade, mesmo que function-a
não use todas as 100 unidades de simultaneidade reservadas.
Para controlar intencionalmente a utilização de uma função, defina a simultaneidade reservada como zero. Isso impede que sua função processe todos os eventos até que você remova o limite.
Para configurar a simultaneidade reservada com a API do Lambda, use as operações da API a seguir.
Por exemplo, para configurar a simultaneidade reservada com a AWS Command Line Interface (CLI), use o comando put-function-concurrency
. O comando a seguir reserva 100 unidades de simultaneidade para uma função denominada my-function
:
aws lambda put-function-concurrency --function-name my-function \
--reserved-concurrent-executions 100
Você observará um resultado parecido com o seguinte:
{
"ReservedConcurrentExecutions": 100
}
Estimar com precisão a simultaneidade reservada necessária para uma função
Se sua função estiver atendendo a tráfego no momento, você poderá visualizar facilmente as métricas de simultaneidade usando as métricas do CloudWatch. Especificamente, a métrica ConcurrentExecutions
apresenta o número de invocações simultâneas para cada função em sua conta.
![Gráfico mostrando a simultaneidade de uma função ao longo do tempo.](images/concurrency-concurrent-executions-metrics.png)
O gráfico anterior sugere que essa função atende a uma média de cinco a dez solicitações simultâneas e atinge o pico de 20 solicitações em um dia típico. Suponha que existam muitas outras funções na sua conta. Se essa função for essencial para sua aplicação e você não desejar descartar solicitação alguma, use um número maior ou igual a 20 como sua definição de simultaneidade reservada.
Com alternativa, lembre-se de que você também pode calcular a simultaneidade usando a fórmula a seguir:
Concurrency = (average requests per second) * (average request duration in seconds)
Multiplicar a média de solicitações por segundo pela duração média da solicitação em segundos fornece uma estimativa aproximada do quanto de simultaneidade você precisa reservar. É possível estimar a média de solicitações por segundo usando a métrica Invocation
e a duração média da solicitação em segundos usando a métrica Duration
. Consulte Uso de métricas do CloudWatch com o Lambda para obter mais detalhes.
Você deve se familiarizar também com as restrições de throughput upstream e downstream. Embora as funções do Lambda sejam dimensionadas perfeitamente com a carga, as dependências de upstream e downstream talvez não tenham os mesmos recursos de throughput. Se você precisar limitar até que ponto a função pode ser escalada, configure simultaneidade reservada na função.