Configurações Incorretas¶
Resumo das Configurações Problemáticas¶
1. Always On = FALSE (CRITICO)¶
O que é¶
Quando o App Service não recebe pedidos durante aproximadamente 20 minutos, o Azure descarrega a aplicação da memória. O próximo pedido desencadeia um cold start completo.
Impacto¶
O Umbraco 7, durante um cold start, reconstrói a cache XML completa a partir da base de dados. Com 4.468 nós de conteúdo e tabelas sobrecarregadas (870K linhas em cmsPropertyData, 1.6M em icUrlTracker), este processo demora vários minutos. Durante este tempo, o site parece estar completamente em baixo.
Correção¶
- Aceder ao Azure Portal
- Navegar para App Service > Configuration > General Settings
- Ativar Always On = On
- Guardar e aguardar o reinício
Custo¶
Nenhum custo adicional. O Always On está incluído no plano Standard S2 (e em todos os planos pagos).
2. 32-bit Worker Process (A AVALIAR)¶
O que é¶
A aplicação está a correr em modo 32-bit, o que limita a memória disponível a aproximadamente 2 GB.
Recomendação¶
Manter 32-bit — Avaliar Apenas se Necessário
O modo 32-bit é mais eficiente em termos de memória e não deve ser alterado sem motivo concreto. A mudança para 64-bit aumenta significativamente o consumo base de memória.
Abordagem recomendada:
- Manter 32-bit por agora
- Executar a limpeza da base de dados (Fase 2)
- Monitorizar a utilização de memória via Application Insights
- Só alterar para 64-bit se a monitorização indicar que a memória está consistentemente próxima do limite
Custo¶
Nenhum.
3. Auto Heal = FALSE¶
O que é¶
O Auto Heal é uma funcionalidade do Azure App Service que permite reiniciar automaticamente a aplicação quando determinadas condições são detetadas (erros, uso excessivo de memória, pedidos lentos).
Impacto¶
Sem Auto Heal, quando a aplicação entra num estado degradado, permanece nesse estado até que alguém reinicie manualmente o App Service.
Correção¶
Ativar Auto Heal com as seguintes regras recomendadas:
| Condição | Ação | Valor |
|---|---|---|
| Memória > 80% durante 5 minutos | Reiniciar | memoryThreshold: 80% |
| Fila de pedidos > 100 | Reiniciar | requestQueue: 100 |
| Pedidos lentos (> 30s) | Registar + Reiniciar | slowRequests: 30s |
| Status HTTP 500 > 10 em 2 min | Reiniciar | statusCodes: 500 |
Custo¶
Nenhum.
4. Health Check = Nenhum¶
O que é¶
O Azure App Service pode ser configurado para verificar periodicamente se a aplicação está saudável, enviando pedidos HTTP para um endpoint específico. Atualmente não está configurado nenhum endpoint de Health Check.
Impacto¶
O Azure não tem forma de saber se a aplicação está a responder corretamente. Instâncias não saudáveis continuam a receber tráfego, resultando em erros para os utilizadores.
Correção¶
- Aceder ao Azure Portal
- Navegar para App Service > Health check
- Definir o caminho:
/umbraco/ping(ou criar um endpoint personalizado) - Ativar
Custo¶
Nenhum.
5. Application Insights - Ingestão Desativada¶
O que é¶
O recurso Application Insights existe no Azure, mas a ingestão de dados está desativada. Isto significa que o recurso foi criado mas nunca configurado para recolher dados, ou foi desativado em algum momento. O resultado é zero telemetria: não há registo de pedidos, erros, tempos de resposta ou métricas de performance.
Impacto¶
- Impossível diagnosticar problemas de forma proativa
- Sem alertas quando o site está lento ou em baixo
- Sem histórico de pedidos ou erros para análise
- Sem métricas de utilização para tomar decisões informadas
Correção¶
- Aceder ao Azure Portal
- Navegar para Application Insights > Properties
- Ativar ingestão de dados (Enable)
- Verificar que a connection string está configurada no App Service (Application Settings)
- Configurar alertas básicos:
- Tempo de resposta > 10 segundos
- Taxa de erros > 5%
- Disponibilidade < 99%
Custo¶
O Application Insights tem um tier gratuito de 5 GB/mês de ingestão de dados. Para um site deste tamanho, é provável que fique dentro do limite gratuito ou tenha um custo mínimo (~5-10 EUR/mês).
6. HTTP/2 = FALSE¶
O que é¶
O HTTP/2 é o protocolo moderno de comunicação web que oferece multiplexing, compressão de headers e server push. O App Service está a usar HTTP/1.1.
Impacto¶
Impacto menor, mas o HTTP/2 melhora a performance geral do carregamento de páginas, especialmente em ligações com latência elevada.
Correção¶
- Aceder ao Azure Portal
- Navegar para App Service > Configuration > General Settings
- Ativar HTTP version = 2.0
- Guardar
Custo¶
Nenhum.
Resumo das Correções¶
| Configuração | Estado Atual | Estado Recomendado | Prioridade | Custo | Tempo |
|---|---|---|---|---|---|
| Always On | OFF | ON | CRÍTICO | 0 EUR | 1 minuto |
| 32-bit Worker | ON | Avaliar após limpeza BD | A avaliar | 0 EUR | Após Fase 2 |
| Auto Heal | OFF | ON | Importante | 0 EUR | 10 minutos |
| Health Check | Nenhum | Configurado | Importante | 0 EUR | 5 minutos |
| App Insights Ingestion | Desativado | Ativado | Importante | 0-10 EUR/mês | 10 minutos |
| HTTP/2 | OFF | ON | Menor | 0 EUR | 1 minuto |
Todas estas correções podem ser aplicadas em menos de 1 hora, sem risco para a aplicação.