Às vezes, vale a pena saber o quão bem o seu servidor web irá lidar com uma grande quantidade requisições ou saber se a sua segurança está funcionando. Especialmente se você está esperando uma grande quantidade acessos em um período vendas, tipo Black Friday, ou quer ver o quanto de melhoria seu novo sistema de balanceamento de carga trará.

Apache Benchmark

Felizmente, já existe uma ferramenta chamada Apache Benchmark para fazer isso por você. É uma ferramenta pouco explorada e gratuita que vem dentro do pacote apache2-utils. Então a primeira coisa que precisamos fazer é instalá-lo.

sudo aptitude install apache2-utils -y

Depois, para fazer uma análise do site site/servidor desejado, basta executar o comando abaixo:

ab -n 1000 -c 20 http://meu-site.com
  • -n 1000 especifica que um total de 1000 solicitações devem ser feitas.
  • -c 20 especifica que 20 solicitações devem ser feitas simultaneamente (simultaneamente) por vez (este é talvez o fator mais importante).
ab -n 1000 -c 20 https://bluehat.site/
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking bluehat.site (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache
Server Hostname:        bluehat.site
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-CHACHA20-POLY1305,2048,256
TLS Server Name:        bluehat.site

Document Path:          /
Document Length:        81458 bytes

Concurrency Level:      20
Time taken for tests:   63.273 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      81872000 bytes
HTML transferred:       81458000 bytes
Requests per second:    15.80 [#/sec] (mean)
Time per request:       1265.461 [ms] (mean)
Time per request:       63.273 [ms] (mean, across all concurrent requests)
Transfer rate:          1263.62 [Kbytes/sec] received

Connection Times (ms)
                 min     mean[+/-sd]     median    max
Connect:         218     220   4.4         219     257
Processing:      259     1041  152.8      1044     1357
Waiting:         115     893   152.5       898     1213
Total:           478     1261  153.9      1263     1585

Percentage of the requests served within a certain time (ms)
  50%   1263
  66%   1295
  75%   1322
  80%   1347
  90%   1413
  95%   1463
  98%   1538
  99%   1567
 100%   1585 (longest request)

Observação:

  • O Apache Benchmark apenas envia solicitações HTTP, portanto, o servidor que está sendo testado não precisa estar usando o Apache, ou seja, funciona com ngix também.
  • Se o servidor web estiver protegido contra DoS o seu IP público poderá ser bloqueado.

Infelizmente, o Apache Benchmark irá apenas atingir a página que você está solicitando e parar por aí. Não funcionará como o navegador do usuário, que buscará todo o conteúdo referenciado, como scripts JavaScript, CSS e imagens. Mas com este simples comando é possível saber como o seu servidor web se comporta diversas situações, principalmente em caso de um ataque DoS.

Categorized in: