instalar example descargar benchmark aws benchmarking jmeter apachebench

benchmarking - example - descargar apachebench



¿Cuál obtiene las medidas correctas, JMeter o Apache ab? (3)

Como ya se indicó en la primera respuesta, la palabra clave "requisitos". JMeter es una mejor opción para probar servidores que sirven páginas web. Por ejemplo, puede enviar una secuencia de solicitudes, generar solicitudes de differet para cada secuencia, analizar las respuestas de HTML y cargar el contenido de imágenes y scripts desde el HTML. AB es una mejor opción para las pruebas API REST, donde necesita que el servidor responda lo más rápido posible y sirva la mayor cantidad posible de solicitudes, no hay conexión entre dos solicitudes consecutivas, etc. Por lo tanto, AB puede generar más solicitudes que JMeter vs el mismo servidor de la misma máquina cliente.

Empecé a escribir algunas pruebas básicas en JMeter y me sorprendió que las medidas fueran tan diferentes de las de Apache ab.

Tengo una LAN gigabit que conecta un servidor Intel i7 con Nginx y una máquina de prueba i5 con JMeter o ab. Inicialmente, simplemente estoy probando la velocidad de respuesta de la página de inicio de Nginx.

ab -c 1 -n 100 http://testserver.local/

da

Document Path: / Document Length: 151 bytes Concurrency Level: 1 Time taken for tests: 0.078 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 38400 bytes HTML transferred: 15100 bytes Requests per second: 1280.77 [#/sec] (mean) Time per request: 0.781 [ms] (mean) Time per request: 0.781 [ms] (mean, across all concurrent requests) Transfer rate: 480.29 [Kbytes/sec] received

Este resultado es constantemente reproducible, +/- un pequeño porcentaje.


En JMeter, tengo un grupo de subprocesos de 100 bucles de 1 usuario que contiene:

  • una configuración del administrador de encabezado HTTP Aceptar codificación: gzip
  • un HTTP Get / sampler
  • un oyente de informe resumido

Con solo 100 muestras, esto da resultados increíblemente inconsistentes cada vez que lo ejecuto. Pero el hecho más sorprendente es que el rendimiento se informa tan bajo como 40 solicitudes por segundo (no 1280). La tasa más alta registrada fue 1030, y esto solo se logró cuando aumenté a 10.000 muestras.

¿Estoy en lo cierto al pensar que JMeter es la herramienta incorrecta para las pruebas de carga simples porque sus gastos generales son demasiado altos para permitir mediciones precisas?


Jmeter le dice cuánto tiempo tomó cada solicitud en realidad . AB solo hace algunos cálculos básicos para obtener el promedio general. Entonces, la respuesta directa a su pregunta es que jmeter lo hace bien y ab solo hace una suposición aproximada dándole la media en todo.

Pero, claro, si pones las dos herramientas una al lado de la otra y las calificas para la velocidad, es obvio que ab va a realizar el jmeter. Jmeter simplemente hace más, registra más datos y está procesando más lógica, por lo que lleva más tiempo revertir una sola solicitud. El simple hecho es que Jmeter es una herramienta de prueba de carga con todas las funciones, AB es, bueno, no.

El objetivo es que el objetivo de una herramienta de prueba de carga no sea ser el chico más rápido en la cuadra, sino que se trata de ser capaz de construir una representación realista del tipo de carga con la que su aplicación podría funcionar cuando se active. A este respecto, jmeter gana indiscutiblemente, por lo que realmente depende de cuáles sean sus requisitos. Si solo desea generar tantas solicitudes como sea posible utilizando la menor cantidad de hardware, ab es una buena opción, pero si desea construir una prueba representativa, con viajes transaccionales, lógica condicional y todo tipo de otras cosas útiles, entonces jmeter es el camino a seguir. Piénselo de esta manera: ambos son proyectos de Apache, pero AB fue, creo, diseñado para probar el servidor web de apache, JMeter, sin embargo, fue diseñado para probar Tomcat.

Ahora, supongo que el jmeter estaba produciendo resultados inconsistentes porque estaba llegando a un límite en la máquina en la que se estaba ejecutando. Apuesto a que estaba ejecutando en modo GUI y tenía al menos un oyente activo, así le está pidiendo a la herramienta que haga mucho. Si necesita una alta tasa de solicitudes, entonces Jmeter tiene un modo pobre y malo. Normalmente, para grandes volúmenes, la mejor práctica es ejecutar pruebas en la línea de comandos con muy pocos oyentes; hay mucha información sobre este tema en el sitio de apache jmeter.

Otro punto que debe considerar, si realmente está metiéndose en pruebas de carga, es que para obtener realmente beneficio de este tipo de cosas, primero debe decidir qué tipo de carga necesita que soporte su sitio y solo entonces debe diseñar una prueba que representa esto. Esto se logra usando el ritmo y los tiempos de espera simulados. El problema de contar un hilo que simplemente debe desaparecer y ejecutarse tan rápido como sea posible es que se repetirá tan rápido como lo permitan sus condiciones locales, pero siempre habrá algo que ponga los descansos, incluso si es ab. limitado; no importa cuán ligera sea una herramienta, aún hace algo . Pero si lleva el ritmo de sus solicitudes, elimina este problema y, como bonificación añadida bastante útil, se obtiene consistencia entre ejecuciones y entre compilaciones del código, por lo que incluso si el servidor se acelera o se ralentiza (con cambios en la base de códigos) su prueba seguirá teniendo la misma tasa de solicitudes, lo cual es bastante útil para la evaluación comparativa.

Si desea llevar JMeter más allá, eche un vistazo al Temporizador de rendimiento constante y luego utilice varios subprocesos para generar el nivel de tráfico que necesita representar.


En su configuración, JMeter se está saturando más rápido de lo que puede saturar su servidor web.

Está ejecutando un servidor web C muy optimizado en un hardware superior y lo marca con una aplicación Java relativamente pesada en hardware menor. El código de máquina C optimizado (probablemente) siempre será más rápido que el bytecode de Java. JMeter no puede mantenerse al día con Nginx y, por lo tanto, le ofrece resultados extraños, ya que se topa con limitaciones de hardware. Java hace muchas cosas agradables en segundo plano que administran los recursos de hardware, pero también crean un comportamiento impredecible con un uso extremo de los recursos. ApacheBench, por otro lado, es un programa C lo suficientemente ligero que puede saturar el servidor y puede producir resultados consistentes porque tiene un exceso de capacidad después de saturar su servidor web.

JMeter es ideal para el benchmark de aplicaciones dinámicas más pesadas que requieren algún tiempo para procesar las solicitudes. Toda la información adicional que proporciona ayuda con aplicaciones web como esa. Cuando se trata de servicios de archivos estáticos (casi lo más rápido que puede hacer un servidor web) en servidores web altamente optimizados, necesita una herramienta lo suficientemente rápida como para mantenerse al día.