¿Cómo puedo reproducir los registros de acceso de Apache en mis servidores para realizar pruebas de carga en el mundo real?

13

Miré Herramientas para servidores HTTP de prueba de carga? pero no pude ver cómo reproducir mis propios registros existentes en ninguna de esas herramientas. Tengo un error que solo ocurre bajo ciertas operaciones de carga que mis cosas de prueba JMeter y AB existentes no pueden reproducir.

Simplemente quiero darle a la herramienta access_logs y hacer que los reproduzca, ya sea más rápido o a la misma velocidad.

Stewart Robinson
fuente

Respuestas:

14

Puede usar el componente Jmeter's Access Log Sampler .

Hay un breve tutorial sobre su uso en este PDF .

Dan Carley
fuente
3
Intenté esto y obviamente debo ser un imbécil porque no pude lograr que funcione bien. Terminé usando el script de python en insom.me.uk/z/2009/02/…
Stewart Robinson el
Dado que el enlace original está muerto, aquí está el enlace en archive.org: web.archive.org/web/20090305084634/https://www.insom.me.uk/…
Walty Yeung
Ok, en caso de que otros encuentren esto, este script tiene un problema con el subproceso. Es posible que deba reemplazar threadlib con threadinglib ( stackoverflow.com/questions/19558401/… )
Walty Yeung
1

Suponiendo que todo lo que tiene en su registro de acceso son solicitudes GET, y no le importa que las solicitudes se agrupen en el límite de resolución de las marcas de tiempo en los registros, unas 10 líneas de $ SCRIPTING_LANGUAGE deberían hacer el truco. Los POST, las cookies, la autenticación HTTP y los tiempos más sutiles son un ejercicio mucho más interesante.

womble
fuente
-1

Eso requeriría un programa, como una aplicación de prueba de carga, que admita la reproducción de registros http. Una de esas aplicaciones es HTTPerf ( https://github.com/httperf/httperf ).

Un artículo de procedimientos está en https://www.igvita.com/2008/09/30/load-testing-with-log-replay/

Barry G
fuente
1
Esta sería una respuesta mucho mejor si incluyera una explicación real. Aquí simplemente se desaconseja el enlace a un sitio web externo, ya que los sitios web pueden desaparecer y, a menudo, desaparecen.
Michael Hampton
-2

Haría algo un poco diferente. Entiendo su pregunta, pero si está buscando cargar su servidor, es posible que desee buscar en la herramienta 'ab'. Viene con la mayoría de las instalaciones de apache. Corriendo:

ab -c 15 -n 1000 http://site.name/

Realizará 1000 solicitudes haciendo 15 solicitudes a la vez. Sé que esto no es exactamente lo que estás buscando, y solo consultará la dirección que le des. Si necesita cargar, esta es una manera rápida y sencilla de hacerlo, y le dará algunas estadísticas potencialmente muy útiles para la depuración.

TrueDuality
fuente
Si la pregunta dice "Tengo un error que las [...] pruebas de AB no pueden reproducir [...]", ¿por qué sugeriría usar AB?
womble
Eché de menos a AB en las herramientas. : p Me encantaría decir que fue una edición, pero sinceramente no estoy seguro de mí mismo.
TrueDuality
-2

¿Por qué no desarrollas el tuyo? Obtenga el registro; analizarlo. Obtén el URI. Hacer curl call. Puede escribir esto en php y ejecutarlo en apache para concurrencia.

Si sus registros están en formato gz, haga un zcat, use la función readlog. Eso le dará URL. Ahora use phpCurl para golpear la URL. Para un mayor rendimiento, ejecútelo en apache (use ab para cargarlo).

Prashant R Kumar
fuente
1
Entonces tendré dos aplicaciones para cargar la prueba. Eso sería retorcido.
Stewart Robinson