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.