Como determinar os afunilamentos no ambiente Ubuntu LAMP

4

Que tipo de testes devo executar para determinar os afunilamentos no meu servidor? Eu estou tentando otimizar para que eu possa manter picos de carga pesada quando eles ocorrem. Estou executando o Ubuntu em um ambiente LAMP.

    
por Webnet 05.11.2010 / 20:59

3 respostas

4

Eu recomendaria primeiro instalar uma estrutura de registro como munin, para que você tenha alguns dados disponíveis em sua carga base e durante os picos em seu servidor. Então, eu iria monitorar as consultas no seu servidor SQL (especialmente as consultas lentas).

Usando essas informações, você já pode determinar se essas situações são extraordinárias ou se elas simplesmente adicionam o último prego a uma máquina altamente carregada e o que acontece, como se estivesse ficando sem memória RAM, certos processos estão martelando o disco vezes, ou a sua CPU é o problema.

    
por 05.11.2010 / 21:20
2

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.

    
por 05.11.2010 / 22:02
1

O que achei melhor é realizar uma análise de capacidade antes da implantação. No entanto, há um ótimo artigo sobre exatamente o que você está procurando, espero que isso ajude.

link

1) Acompanhe as consultas do MySQL que demoram mais de um segundo 2) Monitorar o uso da memória PHP & Registrar tempos de entrega do Apache 3) Registre Erros do PHP 4) Tire fotos em um nível de sistema operacional

Eu também gostaria de adicionar o JMeter nisso. link

    
por 05.11.2010 / 21:28