Para hacer algunas pruebas de carga, para mi propia curiosidad, en mi servidor ejecuté:
ab -kc 50 -t 200 http://localhost/index.php
Esto abre 50 conexiones de mantenimiento durante 200 segundos y simplemente cierra mi servidor con solicitudes de index.php
En mis resultados, obtengo:
Concurrency Level: 50
Time taken for tests: 200.007 seconds
Complete requests: 33106
Failed requests: 32951
(Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 1948268960 bytes
HTML transferred: 1938001392 bytes
Requests per second: 165.52 [#/sec] (mean)
Time per request: 302.071 [ms] (mean)
Time per request: 6.041 [ms] (mean, across all concurrent requests)
Transfer rate: 9512.69 [Kbytes/sec] received
Tenga en cuenta las solicitudes "fallidas" 32951. No puedo resolver esto.
Mientras se ejecutaba la prueba, pude acceder a mi sitio web desde la computadora de mi casa perfectamente, aunque los tiempos de carga de la página en la parte inferior de la página se informaron como .5 en lugar del .02 habitual. Sin embargo, nunca tuve una solicitud fallida.
Entonces, ¿por qué AB informa que la mitad de las conexiones fallan? ¿Y qué significa "Longitud:" en ese contexto?
benchmarking
load-testing
apachebench
Benjamín
fuente
fuente
Respuestas:
No importa. El "fallo de longitud" simplemente indica que aproximadamente la mitad del tiempo la duración de la respuesta fue diferente.
Dado que el contenido es dinámico, probablemente sea el identificador de sesión o algo así.
fuente
Para describir el problema en otras palabras:
La herramienta de evaluación comparativa de apache (ab) supone que la longitud del contenido de la respuesta será la misma durante toda la prueba. Almacena la longitud del contenido de la primera respuesta. Si alguna de las respuestas tiene una longitud de contenido diferente, resultan en "fallas de longitud".
El siguiente informe de error de apache parece confirmar que: Error de ASF 42040
Resumen : si está sirviendo algún contenido de longitud variable, probablemente debería ignorar este tipo de fallas de solicitud ab.
Editar : recientemente me di cuenta de que el
ab
comando tiene una nueva opción (al menos para mí):Puedo verlo en ab Versión 2.3 <$ Revisión: 1528965 $> pero no puedo verlo en ab Versión 2.3 <$ Revisión: 655654 $> , por lo que probablemente se agregó relativamente recientemente.
fuente
Lamento resucitar una vieja pregunta, pero fue la primera que apareció en Google. A veces, el error de longitud informado por ab puede haber sido causado por un problema real: si la conexión se cierra del lado del servidor antes de que el cliente no haya recibido la cantidad total de bytes declarados en el encabezado Content-Length. Eso puede suceder si hay otras partes entre el cliente y el servidor, por ejemplo, equilibradores de carga artesanales ingenuos (mi caso).
fuente