Notas de leitura "The Art of Capacity Planning: Scaling Web Resources"
http://www.amazon.com/Art-Capacity-Planning-Scaling-Resources/dp/0596518579
Medir o load e a capacidade usando métricas específicas
Medir características de workload de cada parte da aplicação: banco, servidor web, rede, ...
É importante saber o que é preciso no futuro para manter uma performance aceitável
O planejamento depende da arquitetura da aplicação
Estatísticas são somente uma parte da figura
Medir, medir, medir.. e fazer gráficos
Orçar é um processo em sí
Medir performance é diferente de planejar capacidade
Dicas de livros:
- Livro sobre design de sites rápidos de Steve Souder - Hight Performance Web Sites (O'Reilly)
- Livro sobre arquitetura de soluções web (hardware + software) de Cal Henderson - Building Scalable Web Sites (O'Reilly)
Pontos de medida
Quando a aplicação e o banco de dados estão num mesmo servidor fica difícil saber o impacto do aumento de querys por segundo no disco, I/O, memória ou cpu por exemplo
Pontos de escala
- BCP - Business Continuity Planning
- DR - Disaster Recovery
Uma solução muito usada é replicar em vários servidores
Mais importante é saber quais métricas usar e não qual ferramenta
Quando uma falha ocorre é importante saber:
- Qual foi a falha
- Quando ocorreu
- O que causou a falha
MRTG é feito com SNMP em mente.
Livro sobre load balancing:
É importante coletar informações específicas da aplicação, exemplo do Flickr, uploads por hora e informações de negócio, quantas pessoas pagaram
Ferramenta autobench
http://www.xenoclast.org/autobench/ simula requisições de vários hosts usando httperf e agrega os resultados
É imprescindível medir cada recurso e manter histórico disso para um bom plano
Resumo do que medir:
- Função primária do servidor
Apache hits, queries de banco
- Recursos de hardware
CPU, memória, disco, uso de rede
- Relacionar funções primárias com os recursos de hardware
n queries no banco de dados resultam em m porcento de uso do CPU
- Encontrar o uso máximo aceitável de uso dos recursos
manipulando acesso ao servidor de produção ou simulando um servidor parecido ao máximo com o ambiente de produção