it-swarm-es.com

¿Herramientas para probar servidores de carga HTTP?

Tuve que cargar servidores HTTP/aplicaciones web de prueba varias veces, y cada vez me he sentido decepcionado por la calidad de las herramientas que he podido encontrar.

Entonces, cuando estás probando un servidor HTTP, ¿qué herramientas usas? ¿Y cuáles son las cosas que probablemente haré mal la próxima vez que tenga que hacerlo?

39
David Wolever

JMeter es gratis.

Mercury Interactive Load Runner es súper agradable y súper caro.

24
Chad Grant

Me siento excepcionalmente calificado para responder esta pregunta, ya que mi compañía actual necesita simular 25,000 conexiones simultáneas a nuestros servidores web (servimos anuncios en línea).

Para pruebas de carga de volumen extremadamente alto, Httperf es el camino a seguir. Es gratis y, en nuestra experiencia, puede simular más conexiones simultáneas que JMeter o STA en el mismo hardware.

Editar:

En caso de que tenga curiosidad, simulamos 3500 solicitudes por segundo en un Optiplex 330 de bajo consumo, económico y de factor de forma ultra pequeño. Estas pequeñas cajas cuestan solo $ 280, y tenemos un montón de ellas conectadas para funcionar Httperf bajo demanda. En comparación, JMeter solo podía empujar alrededor de 800-900 req/seg en este hardware.

21
Portman

Si solo desea cargar la carga en una única URL a la vez en un servidor web, descargue Apache AB. Viene con el servidor Apache HTTP.

Comando simple

ab -n 10000 -c 10 http://serverfault.com/questions/2107/tools-for-load-testing-http-servers

ejecutaría 10000 solicitudes con una concurrencia de 10 usuarios.

Si desea grabar sesiones de navegación, vaya a votar y acepte la respuesta jmeter. Jmeter es sorprendente y puede escalar a muchas máquinas de prueba que pueden arrojar una gran carga.

20
Stewart Robinson

Hay Tsung , una herramienta basada en Erlang.

También hay una larga lista de herramientas en http://www.softwareqatest.com/qatweb1.html#LOAD

8
Jauder Ho

Para una prueba rápida, puede usar secuencias de rizos y conjuntos de URL. Digamos, por ejemplo, que vamos a ejecutar una prueba de esfuerzo de carga contra Google que podemos ejecutar ...

curl -s "http://google.com?[1-1000]"

Esto hará 1000 llamadas a google, es decir.

http://google.com?1  
http://google.com?2  
http://google.com?3 
... 
http://google.com?1000

Esto se discute con más detalle en Cómo hacer una prueba de esfuerzo rápidamente en un servidor web con curl

6
Ian Purton

Deberá configurar diferentes pruebas:

  • Prueba normal, simule a los usuarios como se comportarán. Implementará tiempo de reflexión (sin http fury 1s entre páginas). Una forma es grabar una sesión web, para que tenga tiempo realista para completar/leer cada página. La carga vendrá paso a paso hasta que alcance la carga actual promedio en producción
  • Prueba de ruptura: igual que antes, pero agregue carga hasta que obtenga el primer error http 500. El objetivo es saber cuánta carga puede manejar hasta que se rompa
  • Prueba de larga duración. Mantiene el primer escenario en funcionamiento durante 12 horas, para asegurarse de que no tiene pérdida de memoria o degradación del rendimiento con el tiempo.

Después/antes de cada prueba, debe volver a colocar la plataforma como antes: restaurar la base de datos, reiniciar para limpiar la memoria y el caché.

También implementará un calentamiento: inicie los escenarios una vez antes de la prueba real, para que se compilen las páginas web y se realice la conexión a la base de datos. De lo contrario, la primera llamada siempre será mala en tus estadísticas.

Puede agregar complejidad, como:

  • use diferentes escenarios (visitantes/invitados, miembros), que funcionarán de manera diferente.
  • Simule diferentes accesos de ancho de banda
  • Aleatorizar buscó Word y pensar el tiempo.

Una última cosa importante: DEBE guardar todo el escenario completado para poder volver a hacerlos exactamente de la misma manera, para poder comparar el rendimiento con las pruebas anteriores.

5
Mathieu Chateau

Si solo está buscando probar cómo maneja múltiples conexiones, puede usar algo como Siege . Todavía no estoy seguro de que sea una gran medida, pero al menos le dirá cómo está manejando múltiples conexiones

2
trent

He usado openSTA .

Esto usa un lenguaje de script relativamente simple.

Puede probar fácilmente los servicios/servidores web y escribir sus propios scripts.

Le permite agrupar los scripts en una prueba de la forma que desee y configurar el número de iteraciones, el número de usuarios en cada iteración, el tiempo de aceleración para presentar a cada nuevo usuario y el retraso entre cada iteración. Las pruebas también se pueden programar en el futuro.

Es de código abierto y gratuito.

Produce una serie de informes que se pueden guardar en una hoja de cálculo. Luego usamos una tabla dinámica para analizar y graficar fácilmente los resultados.

2
nzpcmad

Utilicé LoadRunner antes pero, es bastante costoso, también utilicé las herramientas de edición Team Tester de Microsoft que incluyen un sistema que realiza pruebas de carga. Estaba bastante contento con el funcionamiento de la herramienta, y usted podía expandir las pruebas usando .net, que era una sintaxis más fácil de aprender que la de LoadRunner.

La versión de Load Runner que utilizamos tampoco podía manejar nuestro AJAX (Esto fue en el año 2000, así que estoy seguro de que la herramienta se ha mejorado hasta ahora)

1
JoshBerke

Usamos WAPT , y funciona muy bien. Fácil de configurar, y solo unos pocos cientos de dólares. LoadRUnner es ridículamente caro y está totalmente fuera del alcance de todos, excepto el Forutune 500.

1
rmalayter

Depende de cuán complejo sea tu escenario.

Para simular correctamente la carga de usuarios reales en su servidor, debe intentar simular lo que los usuarios realmente están haciendo. Si sus usuarios solo acceden al servidor con una URL, cualquiera de las herramientas gratuitas/simples funcionaría.

Para los sitios web que son un poco más complejos, querrá usar una herramienta que lo ayude con la correlación dinámica de valores, la parametrización, etc. Puede usar Load-Runner y similares, prefiero usar WebLOAD =.

0
Yasei No Umi