sábado, 28 de fevereiro de 2009

Programa livre para teste de servidores Web

Na busca de uma ferramenta para testar uma aplicação que rodava em um servidor web, além do tradicional Jmeter, encontrei um utilitário da apache para linux chamado ab.

O ab (Apache HTTP server benchmarking tool), é uma ferramenta para benchmarking de servidores web da apache (HTTP). Com essa ferramenta possibilita medir o desempenho de sua versão atual do servidor, mostra especialmente quantas requisições por segundo o servidor é capaz de responder.

Para instalar o ab, utilize a seguinte linha de comando:


sudo apt-get install apache2-utils



Um exemplo de utilização:


sudo ab -n 1000 -c 10 -X 192.168.1.114:3128 -e result.csv http://localhost:8080/minhaAplicacao/index.jsp



Segue abaixo a descrição dos parâmetros utilizados no teste:

Parâmetros utilizados:

-n : número de requisições do teste
-c : concorrência, representa o número de usuários simultâneos por requisição
-X : endereço IP do servidor proxy (só utilize esse opção se usar um proxy)
-e : escreve um arquivo .CSV (valores separados por vírgula) contendo a cada porcentagem (1%-100%) o tempo gasto pelo servidor para responder as requisições


Resultado da execução do teste:



This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost [through 192.168.1.114:3128] (be patient)
Completed 100 requests
Completed 200 requests
...
Completed 900 requests
Finished 1000 requests


Server Software: squid/2.6.STABLE16
Server Hostname: localhost
Server Port: 8080

Document Path: /minhaAplicacao/index.jsp
Document Length: 1087 bytes

Concurrency Level: 10
Time taken for tests: 10.509680 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 1503000 bytes
HTML transferred: 1087000 bytes
Requests per second: 95.15 [#/sec] (mean)
Time per request: 105.097 [ms] (mean)
Time per request: 10.510 [ms] (mean, across all concurrent requests)
Transfer rate: 139.59 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 1
Processing: 101 103 1.6 104 110
Waiting: 101 103 1.4 104 109
Total: 101 103 1.7 104 110

Percentage of the requests served within a certain time (ms)
50% 104
66% 105
75% 105
80% 105
90% 105
95% 106
98% 106
99% 106
100% 110 (longest request)



Nesse teste, fiz 1000 requisições com 10 usuários acessando a página simultaneamente por requisição, obtive um tempo médio por requisição de 105ms e verifiquei também que meu servidor (Tomcat 5.5) conseguiu responder em média 95.15 requisições/segundo.

Essa ferramenta é simples de ser utilizada, pode ser usada para medir desempenho de servidores HTTP.

Referência:
http://httpd.apache.org/docs/2.0/programs/ab.html

Um comentário:

aldisseia disse...

tem como explica o arquivo gerado?