Apache Benchmark + GNUPlot: Meça e represente graficamente o desempenho do seu servidor web

Não importa se é usado nginx, apache, Lighttpd ou não, qualquer administrador de rede que tenha um servidor web irá, em algum momento, querer saber com que rapidez o servidor web responde a um determinado número de consultas.

Gerenciamento de servidor de serviços gerenciados-e1368625038693

Referência do Apache + GNUPlot

Desta vez, usaremos uma ferramenta chamada Referência Apache, que embora tenha 'apache' em seu nome, NÃO serve apenas para medir o desempenho do Apache, mas também pode ser usado para Nginx e outros. Na verdade, vou usá-lo para medir o desempenho de nginx.

Também vamos usar GNUPlote, o que nos ajudará a fazer gráficos como estes com algumas linhas:

resultados

Instalando Apache Benchmark e GNUPlot

Apache Benchmark é uma ferramenta que podemos usar depois de instalar o pacote Apache, GNUPlot estará disponível após instalar o pacote de mesmo nome. Então ...

Em distros como Debian, Ubuntu ou similar:

sudo apt-get install apache2 gnuplot

Em distros como ArchLinux ou derivados:

sudo pacman -S apache gnuplot

Precisamos apenas instalar o pacote Apache, não precisamos iniciá-lo ou configurar mais nada, basta instalá-lo.

Usando o Apache Benchmark

O que faremos é enviar um determinado número de pedidos (100) em grupos de vários (de 20 a 20) para um site específico. Vamos salvar o resultado em um arquivo .csv (result.csv) e depois processá-lo com GNUPloit, a linha seria:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

É muito importante colocar o / na URL final do site a ser medido.

Esta é a saída ou registro que me mostra quando testo um site na minha rede:

Este é o ApacheBench, Versão 2.3 <$ Revisão: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licenciado para The Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (seja paciente) ..... pronto

Software do servidor: nginx Nome do host do servidor: gutl.jovenclub.cu Porta do servidor: 80

Caminho do documento: /
Comprimento do documento: 206 bytes Nível de simultaneidade: 20 Tempo gasto para testes: 0.101 segundos Solicitações concluídas: 100 Solicitações com falha: 27 (Conexão: 0, Recebimento: 0, Comprimento: 27, Exceções: 0) Respostas não 2xx: 73 Total transferido: 1310933 bytes HTML transferido: 1288952 bytes
Solicitações por segundo: 993.24 [# / seg] (média)
Tempo por solicitação: 20.136 [ms] (média) Tempo por solicitação: 1.007 [ms] (média, em todas as solicitações simultâneas) Taxa de transferência: 12715.49 [Kbytes / s] Tempo de conexão recebido (ms) mínimo médio [+/- sd] mediana máx. Conectar: ​​0 1 0.2 1 1 Processamento: 1 17 24.8 4 86 Esperando: 1 15 21.5 4 76 Total: 1 18 24.8 5 87 Porcentagem das solicitações atendidas em um determinado tempo (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (solicitação mais longa)

Marquei a vermelho o que considero ser o mais importante, que tem sido mais ou menos:

  1. Dados do servidor que estamos testando, bem como a URL em questão.
  2. Número de solicitações por segundo.
  3. Quantos milissegundos o servidor demorou para atender a solicitação mais demorada, ou seja, aquela que demorou mais para ser atendida.

Com essas informações eles podem ter uma ideia de quanto tempo o servidor levará para atender aquela quantidade de solicitações, eles podem então adicionar um sistema de cache melhor, desativar módulos que não usam, etc etc, executar novamente o teste e veja se o desempenho melhorou ou não.

Recomendo executar o teste 2 ou 3 vezes, para que você crie algo como uma margem, já que os resultados de dois testes consecutivos raramente são idênticos.

Outras opções ou parâmetros úteis do Apache Benchmark:

-k -H 'Aceitar-Codificação: gzip, deflate' : Com isso ab aceitará o cache e a compressão que o servidor configurou, então os tempos serão menores.

-f urls.txt : Portanto, em vez de apenas testar o índice do site, ele fará testes nos URLs que especificamos nesse arquivo.

Enfim ... dê uma olhada em homem ab para você ver.

Mostre o resultado em um gráfico:

Para colocar essa saída em uma imagem, ou seja, em um meio mais visual e que muitas vezes, é tudo que os gestores conseguem entender ... para isso usaremos como falei antes, GNUPlote

Na mesma pasta onde temos o arquivo results.csv (lembre-se, acabamos de gerar com o comando acima) vamos criar um arquivo chamado gnuplot.p:

nano plot.p

Nele vamos colocar o seguinte:

definir tamanho do terminal png 600 definir saída "results.png"definir título"100 solicitações de, 20 solicitações simultâneas "definir proporção de tamanho 0.6 definir grade e definir xlabel"petições"definir ylabel"tempo de resposta (ms)"enredo"results.csv"usando 9 sbezier suave com título de linhas"gutl.jovenclub.cu"

Eu marquei em vermelho o que você sempre deve verificar. Ou seja, de cima para baixo:

  1. Nome do arquivo de imagem a ser gerado
  2. Número de solicitações totais e simultâneas.
  3. Nome do arquivo que acabamos de gerar.
  4. Domínio em que trabalhamos.

Depois de colocar isso, salvamos e saímos (Ctrl + O e, em seguida, Ctrl + X), vamos executar o seguinte:

gnuplot plot.p

E pronto, isso vai gerar o gráfico com o nome desejado, o meu é:

resultados2

O fim!

O Apache Benchmark tem muito mais opções, também há muitas combinações que podemos usar para tornar nosso teste de desempenho ainda mais completo.

Mas ei, isso foi o básico 

Divirta-se!