¿Qué es un generador de carga?
Table of Contents
Principiante - This article is part of a series.
¿ Qué es un generador de carga ? #
El generador de carga es un dispositivo que dedica todos sus recursos de forma exclusiva para realizar las tareas de simulación de los usuarios virtuales, este dispositivo debería ser preferentemente un servidor y en el caso particular de JMeter, es recomendable que solo contenga el sistema operativo ( Alpine o Ubuntu ), Java 1.8+ y JMeter.
¿ Por qué el dispositivo debe ser exclusivo ? #
La razón principal por la cual el dispositivo no debe compartir recursos con otros procesos, es porque se realizan tareas extremadamente precisas de medición de tiempo y cualquier proceso ajeno a la prueba podría afectar negativamente las métricas, y potencialmente arruinar los cronometrajes. Básicamente es evitar que cualquier agente externo estropee nuestros resultados.
¿ Debe ser un servidor físico o virtual ? #
Hoy en dia es raro tener servidores físicos, esto debido a que es más económico tener grandes particiones de hardware y de ahí generar múltiples servidores virtuales. Aunque ambos tienen ventajas y desventajas, este rubro no es tan trascendental como si el servidor está dedicado al 100% a la tarea de generación de carga.
¿ Qué debo hacer si no es exclusivo ? #
Si por algún motivo, no te es posible obtener un servidor dedicado para las pruebas, tendrías que tener conocimiento necesario para deshabilitar las aplicaciones y/o servicios antes de ejecutar la prueba y volver a habilitarlos una vez concluida. Te recomendamos como buena práctica revisar los niveles de CPU, Memoria y ancho de banda después de desactivar los procesos y antes de ejecutar la prueba y continuar así hasta que la prueba concluya.
Otra opción sería evaluar tener tus generadores de carga en la nube, con la creciente utilización Cloud IaaS como AWS, Azure y Google, esta opción es ideal para mantener los costos reducidos, al pagar solamente el almacenamiento de una imagen preelaborada de JMeter para ejecuciones y generar el servidor bajo demanda cuando requieras ejecutar pruebas.
¿ Cuales deberían ser las características de un generador carga ? #
Lamentablemente no existe una regla para calcular los recursos necesarios para simular cierta cantidad de usuarios, esto es debido a las múltiples variables involucradas, sin embargo en Flood.io hemos realizado múltiples mediciones para estandarizar a la instancia m5.xlarge a la cantidad de entre 500 y 1,000 hilos o usuarios virtuales. La instancia es de tipo propósito general y cuenta con 4 CPUs, 16 GB de Memoria RAM y 10 Gbps de interfaz de red.
Ejemplos donde no es posible simular esta cantidad de usuarios virtuales:
- La prueba involucra Audio o Video Streaming, generalmente se agota el ancho de banda antes de llegar a los 500 usuarios virtuales.
- La prueba involucra eCommerce, también en esta prueba se consume más ancho de banda de lo normal, debido a las múltiples imágenes.
- Si el cache manager está habilitado y guardas muchos elementos seguramente agotarás la memoria del generador de carga, antes que el ancho de banda.
- La lógica del script es extremadamente compleja o cuenta con demasiados elementos de programación, esto eleva el consumo de CPU.
- Se tienen habilitados los receptores (listeners), estos consumen memoria y CPU.
- Básicamente cualquier escenario de prueba con mala práctica en donde se agote cualquiera de los recursos de procesamiento, almacenamiento y comunicación del generador de carga.
¿ Puede mi computadora ser un generador de carga ? #
La respuesta absoluta es NO, por muy doloroso que esto pueda sonar. Quizá es una de las preguntas más recurrentes que muchas personas me hacen y casi siempre tengo que hacerles conciencia de las múltiples razones por las cuales esto no puede ser una buena práctica, pero creo que ya he dado diversos ejemplos que sustentan esta respuesta.
Tu equipo de cómputo no está dedicado 100% a la tarea de simulación, están ejecutando múltiples procesos y/o tareas que podrían afectar tus métricas. Posiblemente pudieran otorgar medidas razonablemente desviadas para 20 o 50 usuarios virtuales máximo, sin embargo estos resultados no deberían ser parte de tu línea base para el cálculo de la rodilla.
Conclusión #
El generador de carga es la piedra angular de la ejecución de las pruebas de carga y/o estrés, por tal motivo es necesario otorgarle el debido cuidado para obtener resultados fidedignos, recordemos que dependemos de estos datos para la fase de análisis y es vital tener la certeza de que los resultados son confiables.