Esse foi um caso real de um cliente atendido por nós da azurebrasil.cloud, a aplicação do cliente tem uma biblioteca que transforma que gera PDFs que às vezes apresenta erros relacionados a GDI.
Sem ter como investigar mais a fundo ou uma maneira de reproduzir o erro, ele pediu uma maneira simples e prática para reiniciar o App Service sem precisar conectar no portal do Azure, aparentemente após o restart os erros param de acontecer.
A primeira indicação foi as APIs/Pacotes do Azure SDK, mas como o cliente em questão não conhecia os mecanismos de Autenticação/Autorização de recursos no Azure e estava precisando de uma solução bem rápida optamos pelo uso do Logic Apps, uma solução No Code que permite criação de workflows.
Para o nosso caso temos apenas duas ações, exatamente como a foto que ilustra o post:
- Um gatilho http
- A ação nativa de gerenciar um serviço de aplicativo para fazer o restart.
Pronto, solução implementada! Simples assim!
Esse post serve especialmente para me lembrar que as soluções mais simples às vezes são as melhores!
App Service Auto-healing
Como mencionado os erros são intermitentes e sem uma causa específica, nesse caso que descrevi o cliente queria ter um controle sobre quando o restart aconteceria e para poder ter tempo de investigar o erro.
Mas existe outra solução para cenários como esse, o App Service fornece um mecanismo chamado Auto-Healing que causa o restart automático baseado em algumas condições, tais como:
- Duração de requisições
- Limite de uso de memória
- Quantidade de Requisições
- Códigos de Status HTTP
Para saber mais sobre essa função e como habilitá-la cheque na documentação clicando aqui.