Instalación
En este primer post vamos a ver cómo utilizar JMeter para establecer un "Base Time Line" para nuestros cambios de configuración.
Apache JMeter es un aplicativo diseñado para obtener métricas de rendimiento de una forma automática y repetible. Ésto que parece no es muy importante, sí que lo es. Una de las cosas que debemos eliminar de nuestro vocabulario cuando empecemos a realizar pruebas de carga son: "parece que, más rápido, más lento, ..." todas estas expresiones no nos sirven ya que dependen de muchos factores, aunque el mayor problema es que son subjetivas y dependientes de una/varias personas.
JMeter nos ofrece datos "la página tarda 2,7 seg" ya no depende de si es "rápido" o "lento" son "2,7 seg", si hacemos un cambio y JMeter ofrece "2,9 seg", el cambio hace que el sistema responda más lento.
Debemos tener en cuenta que JMeter
no es un navegador y por lo tanto, no va a procesar los código JavaScript, me explico, JMeter no va a procesar los
document.write del código HTML. Por ejemplo, el siguiente bloque de código no será interpretado por JMeter y por lo tanto, las latencias de
render no se computarán.
<script type='text/javascript'>new BannerManager('http://openads.test.com/').getBanner(106,'banner106',true,-1,false,'null');script>
<script type='text/javascript'>new BannerManager('http://openads.test.com/').getBanner(107,'banner107',true,-1,false,'null');script>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
script>
Una vez
aclarado el funcionamiento de JMeter, vamos a ver cómo configurar una batería de pruebas para simular el acceso a nuestras
webs.
Instalación de JMeter
JMeter es una aplicación Java y necesita de JVM 1.5+ para poder ejecutarse. La instalación simplemente es descomprimir el archivo tar.gz en la ubicación que nosotros queramos ($JMETER_HOME)
Lanzar JMeter
Antes de lanzar JMeter vamos a analizar si las pruebas que vamos a llevar a cabo van a ser muy complejas, ya que si así fuera, necesitaremos ampliar la memoria asignada por defecto a JMeter.
JMeter se inicia con un tamaño máximo de memoria de 512Mb, y aunque en la mayoría de los casos es suficiente, yo suelo configurarlo para que abra con 1024Mb.
Para modificar el parámetro de memoria, simplemente incluiremos una variable de entorno llamada JVM_ARGS donde se le asignan los parámetros de la máquina virtual, por ejemplo
$ export JVM_ARGS="-server -Xms1024m -Xmx1024m"
$ jmeter.sh
También podemos editaremos el archivo $JMETER_HOME/bin/jmeter y cambiar el valor de HEAP para asignarle los valores que deseemos,
en mi caso 1024m
# This is the base heap size -- you may increase or decrease it to fit your
# system's memory availablity:
HEAP="-Xms1024m -Xmx1024m"
Una vez configurado nuestro JMeter, ejecutaremos el script de arranque
$JMETER_HOME/bin/jmeter.sh y se nos mostrará nuestro entorno de trabajo que se ve a continuación
Como podemos observar, JMeter nos ofrece dos
categorías dentro del árbol principal
- Plan de Pruebas
- Banco de Trabajo
En esta primera parte, vamos a ver cómo configurar un nuevo
plan de pruebas, y en la segunda parte veremos cómo podemos utilizar el
Banco de Trabajo
Nota: En JMeter no existe el botón Guardar y por lo tanto, cuando hagamos un "Focus Lost" del componente éste quedará guardado.
Configurar un Nuevo Plan de Pruebas
Lo primero que debemos hacer es añadir un
Grupo de Hilos, para ello seleccionaremos
Plan de Pruebas y haciendo click con el botón derecho
Añadir->Grupo de Hilos. Esto representará a nuestros usuarios, es decir, si queremos comprobar cómo responde nuestro aplicativo con 50 usuarios concurrentes, en la propiedad
Número de Hilos deberemos poner
50.
Para establecer un
Base Time Line debemos establecer el valor de
Número de Hilos a 1, y
Contador del Bucle a un valor
superior a 1, de esta forma, podemos obtener la media de ejecución con un sólo usuario y, de esta forma, tomaremos este dato como nuestro punto de partida.
Cuanto mayor sea el valor de
Contador del Bucle mejor será la precisión, ya que obtendremos más muestras y por lo tanto la media será más realista.
Ahora seleccionaremos nuestro
Grupo de Hilos y con el botón derecho
Añadir->Elementos de Configuración->Valores por Defecto para Petición HTTP. Esto nos permitirá incluir los valores generales de la petición como:
Nombre del Servidor, Puerto, Protocolo y Encoding.
Seleccionamos
Grupo de Hilos y con el botón derecho
Añadir->Muestreador->Petición HTTP y, como hemos introducido
Valores por Defecto simplemente deberemos editar el valor de la propiedad
Path.
Por último, introduciremos un
Listener que nos proporcionará los valores de la muestra, en este primer ejemplo vamos a introducir un
Árbol de Resultados, para ello, seleccionaremos
Grupo de Hilos y botón derecho
Añadir->Listener->Ver Árbol de Resultados
Ya sólo nos queda guardar la prueba,
Archivo->Guardar Como ... y podemos ejecutarla utilizando el menú
Lanzar->Arrancar y ver el resultado en
Ver Árbol de Resultados.
Como podéis ver, el funcionamiento de JMeter es sencillo y la creación de
planes de pruebas no es muy complicado, en
cuatro clicks hemos obtenido un plan de pruebas, sin embargo la información que obtenemos con este
Sencillo Plan no nos aporta mucho, vamos a ver cómo hacer un plan más realista.
Podéis descargar esta prueba sencilla de JMeter HTTP
Instalar nuevo Listener
Antes de comenzar con el
plan de pruebas vamos a instalar un
Listener que nos mostrará de forma gráfica, y más amena, el rendimiento y tiempo de respuesta de nuestro muestreador. Para ello, debemos descargar e instalar
Better JMeter Graphs, después reiniciaremos el JMeter. Una vez hecho esto, tendremos un nuevo
Listener llamado
Statistical Aggregate Report
Configurar un Plan de Pruebas Más "Complicado"
Al igual que hemos hecho en la
Prueba Sencilla de JMeter para HTTP añadiremos un
Grupo de Hilos, añadiremos también
Valores por Defecto para Petición HTTP, ahora viene algún cambio, seleccionamos
Grupo de Hilos y con el botón derecho
Añadir->Elemento de Configuración->Gestor de Cookies HTTP.
Los usuarios no hacen siempre las mismas iteraciones, es decir,
Home->Pagina1->Pagina2->Home, y por lo tanto, si queremos hacer un
plan de prueba que pueda
simular a un usuario, debemos tener en cuenta esto, por ello, JMeter nos ofrece el
Controlador Lógico Random Order, así que seleccionamos
Grupo de Hilos y con el botón derecho del ratón
Añadir->Controlador Lógico->Random Order.
Ahora vamos a introducir los muestreadores HTTP dentro de nuestro
controlador lógico, para ello, seleccionamos
Controlador Random Order y con botón derecho
Añadir->Muestreador->Petición HTTP y aquí pondremos la primera página. Deberemos repetir este proceso para todas las páginas que queremos muestrear.
Por último, vamos a añadir nuestro
Listener seleccionando
Grupo de Hilos y con el botón derecho
Añadir->Listener->Statistical Aggregate Report, guardamos la prueba y ejecutamos.
Podéis descargar la Prueba JMeter HTTP Multiples Páginas
Conclusión
En esta primera parte hemos visto cómo movernos con JMeter y las opciones que nos aporta, además, tenemos el resultado en formato gráfico al incluir el
listener alternativo.
En la siguiente parte, veremos cómo podemos crear pruebas mucho más complejas y cómo establecer valores de control en los muestreadores
Referencias