À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.