Apache Bench - Comparación de salidas

En este capítulo, compararemos las salidas con y sin banderas. Veamos cómo el uso de indicadores adecuados puede aumentar el rendimiento de su aplicación web. Antes de eso, debemos entender cómo si su aplicación es simple, es posible que no note la diferencia. Como es el caso de nuestra sencilla aplicación, con banderas y sin banderas. Luego realizaremos la misma prueba conhttps://www.apache.org/ URL y ver la diferencia.

Probando nuestra aplicación sin banderas

En esta sección, entenderemos cómo probar nuestra aplicación sin banderas.

$ ab -n 100 -c 10 http://127.0.0.1:8000/

Salida

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)

Probando nuestra aplicación con banderas

En esta sección, entenderemos cómo probar nuestra aplicación con banderas.

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://127.0.0.1:8000/

Salida

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

Simplemente podemos señalar que no hay mucha diferencia entre las estadísticas de salida.

Probar el sitio web de la organización Apache sin banderas

Veamos ahora cómo probar el sitio web de la organización Apache sin banderas.

$ ab -n 100 -c 10 http://www.apache.org/

Salida

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)

Prueba del sitio web de la organización Apache con banderas

Probemos ahora el sitio web de la organización Apache con banderas.

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://www.apache.org/

Salida

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

Simplemente puede observar cómo aumentó la solicitud por segundo con el uso de banderas. En el presente caso, se debe particularmente al uso de-H "Accept-Encoding: gzip, desinflar porque esta bandera le dice al servidor Apache que atienda las solicitudes en gzipped formato.

Considerando los resultados de Apache Bench

Es necesario considerar algunos puntos importantes cuando se trata de los resultados de Apache Bench. Esto nos ayudará a diseñar nuestra estrategia general para eliminar los cuellos de botella en nuestra aplicación y mejorar su rendimiento.

Necesitamos solicitudes por segundo. Esto nos da una idea de qué tan bien está funcionando la configuración de nuestro servidor web; cuanto mayor sea el número, mejor será el rendimiento. Luego vienen los Tiempos de conexión (ms) y el Porcentaje de las solicitudes atendidas. Es posible que deba modificar la configuración de su servidor web para cambiar estas métricas al rendimiento deseado.

Compruebe si hay errores en los registros de errores o registros (generales) de Apache o del servidor web utilizado. A medida que aumente su carga, las cosas comenzarán a ahogarse: comenzarán a surgir problemas de memoria. Muchos scripts de Python comenzarán a fallar si no se escriben teniendo en cuenta la concurrencia.

¿Necesita averiguar cuál es el valor de simultaneidad crítico por encima del cual su servidor web falla y / o se agota el tiempo de espera? Normalmente, esto debería suceder a un nivel de concurrencia bastante alto. Si este valor es bajo, algo anda mal y necesita ajustar estos valores más bajos o más altos.

Conclusión

En este tutorial, aprendimos cómo se puede usar Apache Bench para probar la carga de cualquier sitio web o aplicación web. Apache Bench puede ser una herramienta muy valiosa para determinar cómo se debe mejorar la configuración de su servidor de aplicaciones web, para reducir los cuellos de botella y aumentar el rendimiento. Ahora que está familiarizado con el uso básico de Apache Bench, puede comenzar creando nuevos planes de prueba para medir el rendimiento de sus aplicaciones en varios escenarios.