Pruebas de carga con AB requests solicitudes fallidas falsas (longitud)


Para hacer algunas pruebas de carga, por mi propia curiosidad, en mi servidor corrí:

ab -kc 50 -t 200 http://localhost/index.php

Esto abre 50 conexiones keep-alive durante 200 segundos y simplemente cierra mi servidor con solicitudes de índice.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.

A medida que se estaba ejecutando la prueba, pude acceder a mi sitio web desde mi computadora doméstica perfectamente, aunque los tiempos de carga de la página en la parte inferior de la página se informaron como .5 en lugar de habitual .02. Sin embargo, nunca tuve una solicitud fallida.

Entonces, ¿por qué AB reporta que la mitad de las conexiones fallan? ¿Y qué significa "Longitud:" en ese contexto?

Gracias

Author: Adam Wagner, 2009-02-24

3 answers

No importa. El "fallo de longitud" simplemente indica que aproximadamente la mitad del tiempo la longitud de la respuesta fue diferente.

Dado que el contenido es dinámico, probablemente sea el identificador de sesión o algo así.

 324
Author: Jeff Atwood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-28 20:24:07

Para describir el problema en otras palabras:

La herramienta de evaluación comparativa de Apache (ab) asume 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 adicionales tiene una longitud de contenido diferente, resultan en "errores de longitud".

El siguiente informe de error de apache parece confirmar que: ASF Bug 42040

Resumen: Si está sirviendo cualquier contenido de longitud variable, debe probablemente ignore este tipo de fallas en las solicitudes ab.

Editar : Recientemente he notado que el comando ab tiene una nueva opción (al menos para mí):

-l   Accept variable document length (use this for dynamic pages)

Puedo verlo en ab Versión 2.3 > pero no puedo verlo en ab Versión 2.3 , así que probablemente se añadió relativamente recientemente.

 104
Author: Dariusz Walczak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-18 09:07:03

Lamento resucitar una vieja pregunta, pero fue la primera que apareció en Google. A veces, el error de longitud reportado por ab puede haber sido causado por un problema real: si la conexión se cierra en el lado del servidor antes de que la cantidad total de bytes declarados en el encabezado Content-Length no haya sido recibida por el cliente. Eso puede suceder si hay otras partes entre el cliente y el servidor, por ejemplo, equilibradores de carga artesanales ingenuos (mi caso).

 6
Author: zentrunix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-24 18:27:56