Esta é uma questão muito ampla. Para medir qualquer coisa, primeiro você precisa de um indicador de desempenho de linha de base. Instale munin
e munin-node
e avalie sua linha de base. collectd
e o venerável SNMP também são opções, mas não muito fáceis de usar.
Pense no seu aplicativo. É pesado em banco de dados? Muita IO? CPU (codificação de vídeo)? Execute algumas tarefas normais de aplicativos da Web e veja onde seus gargalos ainda existem, primeiro. Use outras ferramentas como siege
, ab
ou JMeter
para automatizar essas tarefas.
Depois de estabelecer algumas métricas de linha de base e pontos de interrupção, você pode ver onde melhorar. Como dito, esta é uma questão ampla e, portanto, tem uma resposta bastante ampla:
-
Limite de E / S: você está acertando o banco de dados desnecessariamente? Qual é o seu cache de consulta? Você precisa otimizar para gravações ou leituras? Você precisa de um servidor de banco de dados separado?
-
Limite de memória: Supondo que você não esteja ligado a uma base de dados / E / S e tenha o máximo que puder na memória, o seu conjunto de dados é muito grande para a memória disponível? Qual é a taxa de acertos do cache? Você está usando uma estrutura de cache separada, como memcached
?
-
CPU bound: seu aplicativo é capaz de aproveitar vários núcleos / trabalhadores? Você sofre de problemas de bloqueio de thread ou contenção? Considere usar um servidor da Web leve como nginx
em vez do Apache ou uma configuração de proxy reverso. Também pode haver parâmetros sysctl.conf
(kernel) relevantes que você pode alterar.
-
Ligação de rede: altamente improvável nesta fase do jogo.
Outros pontos e considerações:
-
Uma rápida otimização em seu banco de dados pode ser feita com mysqltuner.pl .
-
Tente e simule o tráfego real o mais próximo possível (reproduzir novamente os registros de acesso é um bom começo).
-
Se você já atingiu a área de troca no disco em uma configuração de banco de dados de produção, você está em um mundo de dor.
tl; dr Represente graficamente tudo o que acha que é relevante, pressione o seu servidor com força, melhore, repita.