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.