Faço muito desempenho e dimensiono o trabalho e o que descobri é que:
Cada carga de aplicativo é única
Respostas genéricas, como adicionar mais memória ram, obter outro servidor, fazer x, tentar x, geralmente são lições de frustração e deixam as configurações complicadas.
Meça as coisas certas
Um dos maiores desafios é determinar quais referências são importantes. Isso geralmente exige um passo para trás e você deve se colocar no lugar do seu cliente. Às vezes, o design simplista do site muda e significa enormes benefícios para o visitante da web. É por isso que eu gosto de ferramentas como o YSlow! que se concentram mais na experiência do usuário final do que no nível do servidor. Depois de decidir qual é a referência certa para o seu site, você poderá começar a ajustar. Os benchmarks podem ser o tempo total de carregamento da página, tamanho total da página, eficácia do cache, latência do site etc. Você precisa escolher aquele que faz sentido para o seu aplicativo.
Parafusos e porcas
Se você estiver acompanhando os benchmarks certos, comece em um nível muito baixo. Eu gosto de usar o sysstat. Você pode obter muitas informações do sysstat e ajudá-lo a separar qual sistema pode estar limitando o desempenho geral do aplicativo. Geralmente, eu integro problemas de desempenho em:
- pilha de rede
- pilha de memória
- disco io
- camada de aplicação
- camada do sistema operacional
Usando o sysstat e outras ferramentas, você pode começar a dividir os cabelos e encontrar o sistema que está limitando o desempenho.
Por exemplo, vi servidores altamente carregados falharem devido à forma como o aplicativo foi configurado. Armazenamento em cache inadequado, falta de cabeçalhos de validade no conteúdo estático, uso de HTTP x inclusões de arquivos etc. tudo isso contribuiu para o desempenho ruim do aplicativo. A correção desses problemas de aplicativo não exigia alterações de hardware. Em outros casos, eu vi os discos atingirem o máximo, apesar das toneladas de cache. Mover para discos mais rápidos corrigiu o problema.
Enxague e repita
Muitas vezes, durante o ajuste do aplicativo, você abre um gargalo para encontrar apenas outro. É por isso que recomendo tentar monitorar o que você está ajustando.
Por exemplo, digamos que você corrige um problema de E / S de disco, mas seu aplicativo ainda está lento. Você pode pensar que desperdiçou seus esforços, mas o que acontece é que você simplesmente encontra outro gargalo. Ao monitorar cuidadosamente o IO do disco, você pode ter certeza de que está melhorando o IO do disco, mesmo que os importantes monitores de desempenho de aplicativos não estejam mudando.
Obtenha as ferramentas certas
Verifique se você está usando as ferramentas certas para o trabalho. Todas as técnicas de monitoramento, teste, benchmarking, criação de perfil e outras otimizações têm uma variedade de ferramentas. Encontre a ferramenta que melhor corresponde à sua situação.
Regras de ouro
Embora todo aplicativo seja único, encontro alguns pontos de partida padrão:
- bancos de dados de memória amor memória
- disco io qualquer coisa, menos o ataque 10 pode prejudicar o desempenho do banco de dados
- otimizações erradas - grandes valores não se traduzem em grande desempenho
- application - culpando o servidor pelo design inadequado do aplicativo
Seus Próximos Passos
Se você não encontrar seu gargalo, adicionar um servidor pode não ajudar muito. Para resolver as E / S de disco, você pode precisar de outro servidor ou SAN. Se você tiver um gargalo de memória RAM, outro servidor resolverá o problema apenas na medida em que adiciona mais RAM. Movimentação bastante cara em comparação com apenas adicionar mais RAM ao servidor existente.
Conserto rápido
Over deploy. Eu tive que fazer isso quando parece que a pilha de aplicativos é o problema. Carregue basicamente na CPU, RAM e E / S de disco (RAID 10, 15K SCSI ou SSD). Amplie o hardware e comece a ajustar. Isso mantém você à tona até resolver os problemas.