DEV Community

Misael Amorim
Misael Amorim

Posted on

Ajustando Limites de Concorrência do AWS Lambda para Minimizar Throttling

Digamos que você está trabalhando em um projeto chamado NotificaBoleto, um serviço que envia notificações automáticas para clientes, como avisos de vencimento de boletos, por exemplo. Para processar essas notificações, o NotificaBoleto utiliza uma função Lambda que começou a enfrentar problemas de throttling devido ao aumento na quantidade de requisições/invocações.

No Lambda, quando a quantidade de execuções simultâneas de uma função ultrapassa seu limite de concorrência, eventos excedentes são rejeitados. Isso significa que uma quantidade significativa de mensagens está sendo "barrada", o que gera uma experiência negativa para os clientes. Em poucas palavras, throttling significa que o Lambda está recusando execuções porque já atingiu o limite configurado.

Aqui, vamos imaginar o seguinte cenário:

  • O limite atual de concorrência da função é 100.
  • Durante picos, observamos que cerca de 50 eventos por segundo estão sendo throttled.
  • Fora dos picos, a taxa média de processamento de notificações é de 2 eventos por segundo.

Para resolver o problema sem superdimensionar o limite de concorrência, podemos calcular um novo limite usando uma fórmula simples, que leva em consideração tanto a quantidade de eventos throttled quanto a taxa média de invocações.

Calculando o Novo Limite de Concorrência

Primeiro, é importante identificar três valores principais:

  • C: Limite atual de concorrência da função. No caso do NotificaBoleto, é 100.
  • T: Número de eventos que estão sendo throttled (no caso, 50).
  • R: Taxa média de invocações por segundo fora dos picos (neste exemplo, 2 eventos por segundo).

A fórmula para o novo limite de concorrência ( N ) é a seguinte:

N = C + (T/R)

Aplicando os valores do NotificaBoleto:

N = 100 + (50/2)

Ou seja, o limite de concorrência ideal é 125. Esse valor permite absorver a carga extra de eventos sem desperdício de recursos.

Aplicando a Configuração no AWS CLI

Para ajustar o limite de concorrência, você pode fazer isso via AWS CLI com o comando:

aws lambda put-function-concurrency --function-name NotificaBoletoLambda --reserved-concurrent-executions 125
Enter fullscreen mode Exit fullscreen mode

Este comando define o novo limite de concorrência em 125 para a função NotificaBoletoLambda. Após essa configuração, o throttling nos horários de pico deve diminuir ou ser totalmente eliminado.

Top comments (0)