Cuando estamos desarrollando, necesitamos conocer como se comportará nuestra solución si recibe un gran tráfico. Por ello, como ya tenemos un poco de experiencia con Liferay portal es una solución robusta, vamos a realizar unos primeros pasos sobre como configurar JMeter para hacer Test de stress.
JMeter es una herramienta para poder realizar pruebas de carga, aunque en realidad podemos realizar muchas otras pruebas como por ejemplo pruebas unitarias para conexiones de bases de datos con JDBC, FTP, LDAP, Servicios web, JMS, HTTP…
Instalando JMeter
Lo primero que tenemos que hacer es descargar JMeter de su página oficial (http://jmeter.apache.org/download_jmeter.cgi) y descomprimirlo.
Una vez hecho esto vamos a la carpeta y allí /bin y ejecutamos ApacheJMeter.jar
Cómo funciona
Básicamente nosotros lo que vamos a hacer aquí es grabar una pruebas, es decir, registrar todas las peticiones que hacemos a la web y después reproducir esa grabación N veces.
Existen muchas más formas de hacer pruebas de estrés, esto es solo una toma de contacto. Por ello si necesitas un poco más información siempre puedes buscar por el manual de Jmeter o por los foros de Liferay, seguro que encontrarás muchas cosas 😉
Creando el test plan
El software es bastante intuitivo, solo tenemos que ponernos encima de “Plan de pruebas” y con el botón derecho ir añadiendo cosillas.
- Crear un Thread Group: Testplan -> Add -> Threads(Users) -> Thread Group
- Dentro del objeto creado antes añadimos: ThreadGroup -> Add -> Logic Controller .> Recording Controller
- Dentro de Thread Group creamos: Thread Group -> Add -> Config Element -> Http Request Default
Aquí tenemos que configurar un par de campos Como nombre del servidor (Server Name) ponemos localhost, por ejemplo, en caso de hacer las pruebas en local. También tenemos que configurar el puerto, pondremos en el puerto donde se está ejecutando Liferay, por ejemplo 8080.
- Ahora solo nos quedan las cookies, así que allá vamos: Thread Group ->Add -> Config Element ->Http Cookie Manager
5. Para ver los resultados después podemos añadir algún elemento, un gráfico o lo que necesitemos. Thread Group ->Add-> Listener-> Summary Report.
Ahora es cuando configuramos las cosillas para grabar las pruebas. Ahora tenemos que
añadir los elementos en WorkBench (Banco de trabajo)
- En workBench añadimos: WorkBench ->Add -> No-Tetst Element -> Http Proxy Server. Aquí tenemos que modificar el puerto y poner uno que no estemos usando, por ejemplo 7777. Tenemos que recordar el puerto porque luego nos hará falta.
7. Para ver las peticiones necesitamos también añadir un listener: Workbench -> HTTP Proxy Server -> Add -> Listener -> View Results Tree
Grabando las pruebas
Existen muchas maneras sobre cómo hacer las pruebas y que grabar, por ejemplo, podríamos dejar solo las peticiones de datos y eliminar todas aquellas peticiones de Css, o de imágenes. Esto ya es un criterio que decidiremos en función de las pruebas que queramos realizar. Este post al ser una toma de contacto dejaremos todas las peticiones.
Para grabar las pruebas vamos a utilizar Firefox. Así que abrimos el navegador.
Lo primero que hacemos es configurar el proxy, para ello vamos a Herramientas -> Opciones -> Avanzado -> Red -> Configuración …
Veremos una pantalla como la siguiente
Ahora es necesario configurar la compresión gzip, para ella en la barra de direcciones escribimos: about:config y cambiamos la clave network.http.accept-encoding y modificamos gzip,deflate por deflate
- Ahora tenemos que pulsar el botón grabar, para ello vamos a JMeter y en Workbench > Http Proxy Server pinchamos sobre Start
Empezamos a navegar por la página a la que queramos hacer el test y cuando terminemos pulsamos sobre Stop.
Reproduciendo con stress
Una vez que ya tenemos los tests grabados solo tenemos que reproducirlos dándole al play.
Para configurar el número de test que vamos a lanzar a la vez nos vamos a Thread Groups y configuramos Number of Thread (users), Ramp-upy LoopCount.
Ramp-up indica el número de segundos que se tarda n alcanzar el número máximo de usuarios: por ejemplo si tenemos 10 threads y establecemos amp-up en 100 segundo, tenemos que j meter tardará 100 segundos en tener activos 10 hilos, o lo que es lo mismo, arrancará 1 hilo cada 10 segundos..
*Debemos tener cuidado ya que el Ramp–up debe ser suficientemente grande para evitar una carga excesiva inicial, de la misma manera que deberá ser lo suficientemente pequeño para que los últimos hilos arranquen antes de que los que empezaron al principio hallan terminado.
Con esto ya sabemos hacer un plan de pruebas de stress con JMeter y Liferay. Ahora solo queda ir modificando los parámetros, creando nuevas grabaciones,tc.
Tened cuidado y no seáis tan brutotes como yo que tuve en las 20 primeras pruebas que hice ponía unos datos exagerados y JVM petaba de los lindo 😉