Apache Bench - Comparação de resultados
Neste capítulo, compararemos as saídas com e sem sinalizadores. Vamos ver como o uso de sinalizadores apropriados pode aumentar o desempenho de seu aplicativo da web. Antes disso, precisamos entender como se sua aplicação for simples você pode não notar a diferença. Como é o caso de nosso aplicativo simples, com sinalizadores e sem sinalizadores. Então vamos realizar o mesmo teste comhttps://www.apache.org/ URL e veja a diferença.
Testando nosso aplicativo sem sinalizadores
Nesta seção, entenderemos como testar nosso aplicativo sem sinalizadores.
$ ab -n 100 -c 10 http://127.0.0.1:8000/
Resultado
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software: Rocket
Server Hostname: 127.0.0.1
Server Port: 8000
Document Path: /
Document Length: Variable
Concurrency Level: 10
Time taken for tests: 0.244 seconds
Complete requests: 100
Failed requests: 0
Non-2xx responses: 100
Keep-Alive requests: 0
Total transferred: 27700 bytes
HTML transferred: 6600 bytes
Requests per second: 2208.77 [#/sec] (mean)
Time per request: 4.527 [ms] (mean)
Time per request: 0.453 [ms] (mean, across all concurrent requests)
Transfer rate: 597.49 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 2 0.7 2 3
Processing: 0 2 0.7 2 4
Waiting: 0 2 1.0 2 3
Total: 4 4 0.3 4 5
Percentage of the requests served within a certain time (ms)
50% 4
66% 4
75% 5
80% 5
90% 5
95% 5
98% 5
99% 5
100% 5 (longest request)
Testando nosso aplicativo com sinalizadores
Nesta seção, entenderemos como testar nosso aplicativo com sinalizadores.
$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://127.0.0.1:8000/
Resultado
...
Requests per second: 2277.07 [#/sec] (mean)
Time per request: 4.392 [ms] (mean)
Time per request: 0.439 [ms] (mean, across all concurrent requests)
Transfer rate: 615.97 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 2 0.7 2 3
Processing: 0 2 0.7 2 4
Waiting: 0 2 1.0 2 3
Total: 4 4 0.2 4 5
Percentage of the requests served within a certain time (ms)
50% 4
66% 4
75% 4
80% 4
90% 5
95% 5
98% 5
99% 5
100% 5 (longest request)
Podemos simplesmente notar que não há muita diferença entre as estatísticas de saída.
Testando o site da organização Apache sem sinalizadores
Vamos agora ver como testar o site da organização Apache sem sinalizadores.
$ ab -n 100 -c 10 http://www.apache.org/
Resultado
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.apache.org (be patient).....done
Server Software: Apache/2.4.7
Server Hostname: www.apache.org
Server Port: 80
Document Path: /
Document Length: 58433 bytes
Concurrency Level: 10
Time taken for tests: 1.498 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 5877500 bytes
HTML transferred: 5843300 bytes
Requests per second: 66.74 [#/sec] (mean)
Time per request: 149.840 [ms] (mean)
Time per request: 14.984 [ms] (mean, across all concurrent requests)
Transfer rate: 3830.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 12 110 295.2 12 1012
Processing: 37 38 0.5 38 39
Waiting: 12 13 0.3 13 15
Total: 49 147 295.4 50 1051
Percentage of the requests served within a certain time (ms)
50% 50
66% 50
75% 50
80% 50
90% 816
95% 1050
98% 1051
99% 1051
100% 1051 (longest request)
Testando o site da organização Apache com sinalizadores
Vamos agora testar o site da organização Apache com sinalizadores.
$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate" http://www.apache.org/
Resultado
...
Document Length: Variable
Concurrency Level: 10
Time taken for tests: 0.357 seconds
Complete requests: 100
Failed requests: 0
Keep-Alive requests: 100
Total transferred: 1358510 bytes
HTML transferred: 1317700 bytes
Requests per second: 280.28 [#/sec] (mean)
Time per request: 35.678 [ms] (mean)
Time per request: 3.568 [ms] (mean, across all concurrent requests)
Transfer rate: 3718.41 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 3.7 0 12
Processing: 14 17 21.3 15 227
Waiting: 14 17 21.3 14 227
Total: 14 18 21.5 15 227
Percentage of the requests served within a certain time (ms)
50% 15
66% 15
75% 15
80% 15
90% 27
95% 28
98% 29
99% 227
100% 227 (longest request)
Você pode simplesmente observar como a solicitação por segundo aumentou com o uso de sinalizadores. No caso presente, é particularmente devido ao uso de-H "Accept-Encoding: gzip, desinflar porque este sinalizador diz ao servidor Apache para atender às solicitações em gzipped formato.
Considerando os resultados do Apache Bench
Alguns pontos importantes precisam ser considerados quando se trata dos resultados do Apache Bench. Isso nos ajudará a projetar nossa estratégia geral para remover os gargalos em nosso aplicativo e melhorar seu desempenho.
Precisamos de solicitações por segundo. Isso nos dá uma ideia de como a configuração do nosso servidor da web está funcionando; quanto maior o número, melhor é o desempenho. Em seguida, vêm os tempos de conexão (ms) e a porcentagem de solicitações atendidas. Você pode ter que ajustar as configurações do seu servidor web para alterar essas métricas para o desempenho desejado.
Verifique se há erros nos logs de erros do Apache ou do servidor web ou logs (gerais) usados. Conforme você aumentará sua carga, as coisas começarão a engasgar: problemas de memória começarão a surgir. Muitos scripts Python começarão a travar se não forem escritos com a simultaneidade em mente.
Você precisa descobrir qual é o valor de simultaneidade crítico acima do qual seu servidor da web trava e / ou atinge o tempo limite? Normalmente, isso deve acontecer em um nível de simultaneidade bastante alto. Se este valor for baixo, algo está errado e você precisa ajustar essas configurações para mais ou para menos.
Conclusão
Neste tutorial, aprendemos como o Apache Bench pode ser usado para testar a carga de qualquer site ou aplicativo da web. O Apache Bench pode ser uma ferramenta muito valiosa para determinar como a configuração do servidor de aplicativos da web deve ser aprimorada, para reduzir gargalos e aumentar o desempenho. Agora que você está familiarizado com o uso básico do Apache Bench, pode começar criando novos planos de teste para medir o desempenho de seus aplicativos em vários cenários.