apachebench - test - Apache Bench: Mean vs Mean en todas las solicitudes concurrentes
apache stress test tool (2)
Aquí hay un ejemplo del resultado de una prueba de ab. Realizo 1000 peticiones que con 3 peticiones concurrentes.
C:/>ab -d -e a.csv -v 1 -n 1000 -c 3 http://www.example.com/index.aspx
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking www.m-taoyuan.tw (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
Finished 1000 requests
Server Software: Microsoft-IIS/6.0
Server Hostname: www.m-taoyuan.tw
Server Port: 80
Document Path: /index.aspx
Document Length: 25986 bytes
Concurrency Level: 3
Time taken for tests: 25.734375 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 26372000 bytes
HTML transferred: 25986000 bytes
Requests per second: 38.86 [#/sec] (mean)
Time per request: 77.203 [ms] (mean)
Time per request: 25.734 [ms] (mean, across all concurrent requests)
Transfer rate: 1000.72 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 4.4 0 15
Processing: 62 75 9.1 78 109
Waiting: 46 64 8.0 62 109
Total: 62 76 9.3 78 109
Como puede ver, hay dos campos de Tiempo por solicitud .
- Tiempo por solicitud (media)
- Tiempo por solicitud (media, en todas las solicitudes concurrentes)
Por favor, verifique primero el campo Tiempo de prueba . El valor es de 25.734375 segundos, que es de 25734.375 ms .
Si dividimos 25734.375 ms por 1000 , obtendrá 25.734 [ms], que es exactamente el valor del campo Tiempo por solicitud (media, en todas las solicitudes concurrentes) .
Para el Tiempo por solicitud (media) , el valor es 77.203 [ms] . El valor es un poco más largo que el tiempo por solicitud (es decir, en todas las solicitudes simultáneas) . Esto se debe a que la (media) se cuenta por cada solicitud específica y calcula su tiempo promedio.
Déjame darte un ejemplo simple.
Supongamos que hacemos 3 solicitudes con 3 conexiones concurrentes. El tiempo necesario para las pruebas será de 90 ms y cada solicitud será de 40 ms, 50 ms, 30 ms. Entonces, ¿cuál es el valor de estos dos tiempos por solicitud ?
- Tiempo por solicitud (media) = (40 + 50 + 30) / 3 = 40ms
- Tiempo por solicitud (media, en todas las solicitudes concurrentes) = 90/3 = 30 ms
Espero que puedas entenderlo. :)
¿Cuál es la diferencia entre esos 2 campos? :
- Tiempo por solicitud (media)
- Tiempo por solicitud (media, en todas las solicitudes concurrentes)
¿Cómo se calcula cada uno de ellos?
Salida de muestra:
Time per request: 3953.446 [ms] (mean)
Time per request: 39.534 [ms] (mean, across all concurrent requests)
¿Por qué hay mucha diferencia?
Sería útil ver su entrada, pero creo que la salida le dice que no hay ahorro de tiempo para realizar solicitudes concurrentes.
El tiempo por solicitud (media) le indica la cantidad promedio de tiempo que tomó procesar un grupo concurrente de solicitudes.
El tiempo por solicitud (es decir, en todas las solicitudes concurrentes) le indica la cantidad promedio de tiempo que tomó para que una sola solicitud se procesara por sí misma.
Si procesó 100 solicitudes al mismo tiempo, tomó 3953.446 ms.
Si los procesara individualmente, tomaría 39.534 ms * 100 = 3953.4 ms.
Mismo número. No hay ahorro de tiempo para realizar solicitudes simultáneas (al menos para el número total de solicitudes que probó).