Jump to content

Benchmark Gráfico Para Um Servidor Web


zanin

Recommended Posts

Beleza pessoal?

Existe uma ferramenta chamada ab (Apache Benchmark). Ela é usada, como o nome sugere, para executar testes de desempenho do Apache. Eu tenho usado esta tool as vezes em alguns testes básicos, mas certo dia vasculhando a página do manual (man ab) descobri um parâmetro interessante: -g (gnuplot-file). Como já conheço o gnuplot, resolvi dar uma googada para ver se minhas suspeita se confirmava: criar gráficos dos testes do ab. O resultado foi que achei um monte de páginas, e sim! O parâmetro era para isso mesmo! Transformar os resultados do ab em gráfico. :ph34r: Blah blah blah concluído, vou fazer uma síntese rápida sobre como fazer um teste como este:

benchmark.png

O teste será baseado em três simulações usando o ab, emulando o acesso de até 50 usuários efetuando 10 requisições por segundo. Será feita a primeira simulação, depois a segunda e depois a terceira. Vamos pegar os dados das três simulações e plotar em um gráfico através do gnuplot.

O meu ambiente de simulação foi feito usando dois VPS. Onde um dos VPS foi onde efetuei os comandos para gerar os testes e o gráfico, e no outro VPS é o servidor alvo de meu teste (www.meusite.com).

1 - Instalar as ferramentas necessárias: httpd-tools gnuplot

yum install httpd-tools gnuplot
2 - Vamos fazer a primeira simulação de acesso:
ab -c 10 -n 50 -k -g /home/username/public_html/bench1.tsv http://seusite.com/
Não vou detalhar o comando acima, até porque logo no final deste texto terá links referentes as ferramentas usadas. Mas vale a pena algumas considerações: Substitua os parâmetros de acordo com sua necessidade. Neste caso, esta primeira simulação será gravada com o nome bench1.tsv no caminho abaixo: /home/username/public_html/bench1.tsv Eu optei salvar este arquivo na pasta public_html para me facilitar a visualização do gráfico. Logo após este parâmetro, temos outro parâmetro que é o site alvo, neste exemplo: http://seusite.com/ Troque-o de acordo com sua necessidade. Nota: é importante a barra "/" no final do endereço! 3 - Faça novamente o teste, mas mude o nome do arquivo bench2.tsv para que ele salve nosso segundo teste:
ab -c 10 -n 50 -k -g /home/username/public_html/bench2.tsv http://seusite.com/
4 - O mesmo para a última simulação (mudando novamente o nome para salvar a terceira simulação):
ab -c 10 -n 50 -k -g /home/username/public_html/bench3.tsv http://seusite.com/
5 - Agora temos nossas simulações salvas em 3 arquivos. Vá até a pasta onde salvamos os arquivos, no caso /home/username/public_html e vamos executar o gnuplot:

<p>$ cd /home/username/public_html</p>

<p>$ gnuplot</p>

6 - Neste ponto, você estará no prompt do gnuplot. Então vamos construir o gráfico:

gnuplot> set terminal png

gnuplot> set output "benchmark.png"

gnuplot> set title "Benchmark for meusite.com"

gnuplot> set size 1,1

gnuplot> set grid y

gnuplot> set xlabel 'Requisicoes'

gnuplot> set ylabel 'Tempo de Resposta (ms)'

gnuplot> plot "bench1.tsv" using 10 smooth sbezier with lines title "Benchmark 1:", "bench2.tsv" using 10 smooth sbezier with lines title "Benchmark 2:", "bench3.tsv" using 10 smooth sbezier with lines title "Benchmark 3:"

gnuplot> exit

Pronto! Vc acaba de criar um arquivo na pasta home/username/public_html chamado de benchmark.png e poderá ver os resultados. Você pode usar este recurso para comparar o desempenho de seu site com outros por exemplo, ou verificar alterações de desempenho após alterar parâmetros de seu servidor, etc... Para facilitar sua vida, o gnuplot permite que você use um template de parâmetros, evitando ter que digitar os comandos do passo 6: Crie um arquivo chamado template.tpl e preencha o arquivo com o conteúdo abaixo:

# Saída como imagem PNG

set terminal png


# Salvar o arquivo como "benchmark.png"

set output "benchmark.png"


# Título do gráfico

set title "Benchmark de meusite.com"


# Relação do tamanho da imagem

set size 1,1


# Habilita grade para o eixo Y

set grid y


# Rótulo para o eixo X

set xlabel "Requisicoes"


# Rótulo do eixo Y

set ylabel "Tempo de Resposta (ms)"


# plot data from bench1.tsv,bench2.tsv and bench3.tsv using column 10 with smooth sbezier lines

plot "bench1.tsv" using 10 smooth sbezier with lines title "Benchmark 1:", \

"bench2.tsv" using 10 smooth sbezier with lines title "Benchmark 2:", \

"bench3.tsv" using 10 smooth sbezier with lines title "Benchmark 3:"

Com este arquivo criado, você executa os itens 2, 3 e 4 para gerar os dados da simulação e para gerar o gráfico, usamos o nosso template com o comando:
gnuplot template.tpl

Espero ter ajudado com essa dica.

Abraços!!

Sites de referência e consulta:

http://httpd.apache....rograms/ab.html

http://www.gnuplot.info/

http://www.karlosp.n...s-with-gnuplot/

http://tjholowaychuk...hing-benchmarks

http://www.yolinux.c...nchmarking.html

http://blog.secaserv...ache-benchmark/

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?