O Que É uma Retry Storm? Explicado
Uma retry storm é uma falha autoamplificada em que muitos clientes fazem retry de um serviço em dificuldade simultaneamente e acumulam tanta carga que ele não consegue se recuperar.
Retries são bons para falhas transitórias, mas feitos sem cuidado transformam um breve soluço em uma interrupção prolongada. Quando um serviço tropeça e cada cliente imediatamente faz retry, a onda de retries pode ser mais pesada que o tráfego original, mantendo o serviço fora do ar. Isso é uma retry storm, e é uma história de advertência sobre retries ingênuos.
Como uma storm se forma
Um serviço fica lento ou falha brevemente. Cada cliente faz retry de uma vez. Esses retries chegam por cima do tráfego normal, então o serviço fica agora mais sobrecarregado do que antes. Ele falha mais, disparando mais retries, um laço de realimentação que mantém o serviço fora do ar muito depois de o gatilho original ter passado.
Por que é tão prejudicial
Uma retry storm converte um piscar transitório, que deveria se resolver em segundos, em uma interrupção prolongada. Os retries não são maliciosos; cada cliente está fazendo a coisa "razoável". O comportamento emergente é o problema: milhares de retries razoáveis tornam-se um ataque de negação de serviço acidental contra a sua própria dependência.
Como preveni-la
- Backoff: espere mais tempo entre tentativas para que os retries se espalhem ao longo do tempo.
- Jitter: aleatorize os atrasos para que os clientes não façam retry em ondas sincronizadas.
- Limites: restrinja o total de tentativas para que uma falha definitiva pare, em vez de entrar em laço.
- Circuit breakers: pare completamente de fazer retry quando um serviço está claramente fora do ar.
A lição para a autocorreção
Uma boa autocorreção não é "fazer retry de tudo agressivamente". Ela é seletiva, limitada e com backoff, justamente para que não crie uma retry storm. O objetivo de fazer retry é recuperar-se de falhas transitórias, não fabricar falhas sustentadas.
O ângulo da Latchkey
Os runners gerenciados com autocorreção da Latchkey fazem retry de falhas transitórias e mecânicas com limites sensatos e backoff, em vez de instantânea e infinitamente, para que um piscar isolado não faça seu build falhar, e a recuperação não se transforme em uma retry storm contra um upstream já em dificuldade.
Principais conclusões
- Uma retry storm são retries sincronizados sobrecarregando um serviço em dificuldade.
- Ela transforma um breve piscar em uma interrupção prolongada e autorreforçada.
- Backoff, jitter, limites e circuit breakers a previnem.
- Uma boa autocorreção é seletiva e limitada, não agressiva.