Alto índice de erros 500 no bole.to por Request Timeout.
Incident Report for Boleto Simples
Postmortem

Resumo

Este incidente ocorreu na aplicação que serve o domínio bole.to responsável por hospedar os boletos nos formatos PNG e PDF. Essa aplicação está hospedada em cloud com configurações de alta escalabilidade e aumento automático de recursos a partir de um serviço chamado Hirefire. Um upgrade nos recursos do servidor para aumentar a sua performance acabou causando o incidente que deixou a aplicação pouco responsiva por 1h e 20min.

Gostaríamos de nos desculpar por qualquer transtorno causado e nos colocar a disposição para quaisquer esclarecimentos. Nosso canal do suporte está aberto para tirarmos qualquer dúvida.

Descrição do Problema

Dia 19 de Julho às 16:30h

Com o objetivo de melhorar a performance dessa aplicação, nós fizemos um upgrade dos dynos de Standard-2x para Performance-M, desabilitamos a auto-escalabilidade no Hirefire e habilitamos o auto-scaling do próprio Heroku.

Ao monitorar o desempenho da aplicação, tudo parecia estar funcionando muito bem.

Dia 20 de Julho às 8:00

A aplicação sofreu um índice de erros superior ao usual que não afetou sua disponibilidade.

Dia 20 de Julho às 15:50

Por conta de um alto volume de acessos, o volume de erros aumentou até o ponto que deixou o serviço indisponível.

Dia 20 de Julho às 16:15

Nossa equipe técnica começou a trabalhar para mitigar o problema. Os erros foram de Request Timeout enviados após 28 segundos que as requisições ficavam esperando. Houve um acúmulo de processamentos pendentes na fila e um aumento de requisições de retentativas de acesso.

Dia 20 de Julho às 17:05

Depois de conseguir entender o que estava acontecendo, mudamos algumas configurações de número de threads e concorrência, reduzimos o timeout para 10 segundos e o problema foi resolvido.

Dia 20 de Julho às 17:10

O problema foi completamente resolvido e o servidor parou de retornar request timeout.

Plano de Remediação

No mesmo dia, durante a noite a equipe técnica trabalhou para certificar que o serviço continuaria funcionando bem nos próximos dias.

Dia 20 de Julho às 22:40

Foram realizados vários testes de carga na aplicação.

Dia 21 de Julho às 00:30

Os testes de carga foram finalizados e as configurações de dyno, threads, concorrência e timeout foram ajustadas para que a aplicação aguentasse 10x a carga média do histórico dos últimos 7 dias.

Dia 21 de Julho

Monitoramos de perto durante todo o dia como a aplicação iria performar e não tivemos nenhum incidente durante o dia. Algumas configurações de auto-escalabilidade foram ajustadas.

Dia 22 de Julho

O monitoramento continuou e a aplicação continua respondendo bem.

Próximos Passos

Como próximos passos iremos continuar ajustando as configurações para ganhar mais performance pois o Dyno Load e o Response Time ainda estão mais altos do que o desejável.

Como aprendizado, iremos fazer tais mudanças na infra-estrutura dos servidores com mais cautela e iremos manter as margens de segurança de recursos ociosos maior durante todo o tempo.

Mais uma vez gostaríamos de dizer que sentimos muito pela falha e que vamos continuar trabalhando para que o mesmo não ocorra mais.

Obrigado pela atenção.

Posted Jul 22, 2021 - 14:49 GMT-03:00

Resolved
Hoje a partir das 15:50 o servidor que hospeda os boletos e fornece os formatos de PNG e PDF apresentou problema ao responder algumas requisições.

Os acessos ao https://bole.to apresentaram um alto índice de erro 500 no processamento das requisições, após 30 segundos de processamento.

Os técnicos começaram a trabalhar às 16:15 para mitigar o problema que foi completamente resolvido às 17:10

O problema foi devido a uma falha de configuração após o aumento do poder de processamento das máquinas virtuais.

Fizemos um upgrade dos dynos Standard-2x para Performance-M no Heroku com o intuito de aumentar nossa capacidade de processamento, porém as configurações de número máximo de processos e threads não ficou otimizada.

O problema foi mitigado e durante o final de semana iremos melhorar as configurações para aproveitar ao máximo os recursos computacionais que temos disponíveis com os novos dynos.
Posted Jul 20, 2021 - 04:00 GMT-03:00