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:
Aplicando os valores do NotificaBoleto:
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
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)