2009-02-23 13 views
179

para hacer algunas pruebas de carga, por mi propia curiosidad, en mi servidor me encontré:Pruebas de carga con AB ... solicitudes con error falsos (longitud)

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

Esto abre 50 conexiones de mantenimiento de conexión para 200 segundos y simplemente cierra de golpe mi servidor con solicitudes de index.php

En mis resultados, me sale:

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 

Nota del 32951 "fallido" peticiones. No puedo resolver esto.

Como la prueba se estaba ejecutando, pude acceder perfectamente a mi sitio web desde la computadora de mi casa, aunque los tiempos de carga de la página al final de la página se informaron como .5 en lugar de los .02 habituales. Sin embargo, nunca tuve una solicitud fallida.

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

Gracias

+0

¿Su sitio web tiene un equilibrador de carga? Ver la publicación de mi blog sobre [pruebas de carga con equilibradores de carga] (http://blog.browsermob.com/2009/02/tips-for-testing-with-load-balancers/) que podría explicar el "funciona para mí" situación en la prueba de carga. –

Respuesta

312

Nevermind. El "error de longitud" simplemente indica que aproximadamente la mitad del tiempo la duración de la respuesta fue diferente.

Dado que los contenidos son dinámicos, es probable que sea el identificador de sesión o algo así.

+6

Oye, me encontré con el mismo "problema" y me alegro de que esta respuesta haya llegado. Gracias! –

+1

¡Yo también! ¿No pueden llamarlo algo además de un "fracaso"? – scotts

+2

Gracias por la respuesta, tenía exactamente la misma duda. – Saiyine

97

para describir el tema en otras palabras:

La herramienta de evaluación comparativa Apache (ab) supone que la longitud del contenido de la respuesta será la misma durante toda la prueba. Almacena la duración del contenido de la primera respuesta. Si alguna de las respuestas posteriores tiene una duración de contenido diferente, dan como resultado "fallas de longitud".

Tras el informe de errores de Apache parece confirmar que: ASF Bug 42040

Resumen: Si va a servir cualquier contenido de longitud variable, probablemente debería ignorar este tipo de fallos de solicitudes ab.

Editar: Recientemente me he dado cuenta que el comando ab tiene un nuevo (al menos para mí) opción:

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

me puedo ver en ab Versión 2.3 < $ Revision: 1528965 $ > pero no lo puede ver en ab Versión 2.3 < $ Revisión: 655654 $ >, por lo que probablemente se agregó hace relativamente poco tiempo.

+2

gracias por la opción "-l" pista! – gue

+3

Para cualquier persona en una Mac, es probable que su versión de ab esté detrás y no la tome. Puedes instalarlo desde la fuente o vía homebrew, pero "brew install ab" no funciona porque es parte del paquete apache; puedes instalarlo con "brew install homebrew/apache/ab". – netpoetica

5

Perdón por resucitar una pregunta anterior, pero fue la primera que apareció en Google. A veces, el error de longitud informado por ab puede deberse a un problema real: si la conexión se cierra desde el 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).

Cuestiones relacionadas