2010-11-07 2 views
5

¿Hay alguna manera de obtener el tráfico real de la red del grabador al servidor web, p. desde los registros del servidor web (Apache), y reproducir este tráfico en la aplicación web de perfil (en Perl) bajo carga real, o comparar y comparar la velocidad de diferentes implementaciones antes de elegir una u otra?¿Cómo reproducir el tráfico al servidor web desde los registros a la aplicación web de perfil/punto de referencia bajo carga real?

Si es importante, webapp está escrita en Perl, y se ejecuta en CGI simple, FastCGI, mod_perl (a través de ModPerl :: Registry), PSGI (a través de Plack :: App :: WrapCGI).

crossposted a Pro Webmasters


preguntas similares sobre el servidor falla:

Respuesta

3

Un escaneo rápido en Google para esto arrojó una entrada de blog interesante con los siguientes comentarios útiles en http://www.igvita.com/2008/09/30/load-testing-with-log-replay/. Un comentarista también mencionó Tsung by Process-One que permite grabar sesiones en tiempo real, con la nota obvia de que debería poder volver a reproducirlas. Sin embargo, eso no ayuda mucho con los registros de acceso de Apache existentes.

+0

El primer enlace me da "Página no encontrada", desafortunadamente –

+1

Pruebe la caché de Google en http: // www .google.com/url? sa = t & source = web & cd = 1 & ved = 0CCcQIDAA & url = http% 3A% 2F% 2Fwebcache.googleusercontent.com% 2Fsearch% 3Fq% 3Dcache% 3ATGz8YxnCvcgJ% 3Awww.igvita.com% 2F2008% 2F09% 2F30% 2Fload -testing-con-log-replay% 2F% 2Bload-prueba-witlh-og-replay% 26cd% 3D1% 26hl% 3Den% 26CT% 3Dclnk% 26gl% US3D y ei = P4fZTOv8BcLflgfp5YGDCQ y USG = AFQjCNG1yZBmtfxBJO19whcRu4nEjz_7mA y SIG2 = fzkGw6lyW_g5eczMxXFEQA – zerolagtime

1

Respuesta corta se le dio en el otro lado.

La respuesta más larga es que no se puede: faltarán los encabezados de solicitud y los cuerpos de POST.

+0

Para la aplicación web específica que quiero referencia/perfil, no importa: utiliza solo solicitudes GET, y prácticamente no hay diferencia wrt. solicitar encabezados (además de servir como 'texto/html' frente a 'application/xml + xhtml'). –

0

Si solo se requieren solicitudes GET y no hay seguimiento de sesión implementado a través de parámetros de consulta, entonces esto es posible.

Una pregunta: ¿quieres hacerlo de esta manera porque (1) quieres emular la distribución del tráfico en el mundo real entre tus páginas o (2) hay demasiadas páginas para considerar construir cualquier tipo de scripts de prueba ?

+0

El problema no solo es la optimización para un tráfico real, sino también el hecho de que el tráfico real genera presión de E/S en la aplicación web (que es E/S en lugar de CPU o memoria, o red enlazada). Hay una página principal, más de 800 páginas secundarias, luego esas páginas secundarias tienen muchas páginas secundarias ... http://git.kernel.org –

2

estado aquí últimamente. Pensé que si descartaba el tráfico de tcp con tcpdump podría reescribir el destino de los paquetes y luego volver a reproducirlo en los nuevos servidores de aplicaciones. Así que empecé a salir con algo como esto:

tcpdump -i eth1 dst -s 0 -w - port 80 | \ 
tcprewrite --mtu-trunc --infile=- --outfile=- \ 
--dstipmap=<source_ip>:<destination_ip> | \ 
tcpslice -w - - | tcpreplay --intf1=eth1 - 

No funcionó por diversas razones, por lo que comenzó a cavar un poco más y encontró Gor: un pequeño proyecto Go por Leonid Bugaev de Granify, escrito por exactamente lo que queríamos para lograr aquí.

Esto es lo que terminamos utilizando Gor: http://devblog.springest.com/testing-big-infrastructure-changes-at-springest/

Tenemos un libro de cocina Chef para él también: https://github.com/Springest/gor-chef

Espero que esto ayude.

+0

Tiene toda la razón. Lo actualicé Gracias – wrdevos

Cuestiones relacionadas