Mostrando las entradas con la etiqueta Glowroot. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Glowroot. Mostrar todas las entradas

jueves, mayo 16, 2019

Glowroot, un aliado para la mejora de performance de mis aplicaciones

El Glowroot es un APM que estoy usando para poder evaluar el rendimiento de mi aplicación y la considero una herramienta fundamental para el desarrollador. Hoy en día el papel del desarrollador no es solo picar código, si no que también debemos estar atentos a que nuestra aplicación pueda convivir dentro del ecosistema de aplicaciones que la rodean.  En mi caso tengo una aplicación que atiende a todo el país y debe convivir con otras aplicaciones que brindan servicios los cuales consumo aparte de exponer servicios a varios clientes. Esto hace a que debo estar atento a que los cambios que se realizan no impacten en el rendimiento del ecosistema en el que se ve inserto el sistema.

Para poder estar atento al rendimiento de mi aplicación necesito contar con alguna herramienta que me permita hacer un estudio del consumo de memoria, consultas a la DB y guardar estadísticas de estos consumos.

En mi caso me encuentro haciendo refactoring a un sistema que lleva en producción unos 11 años y ha sufrido cambios varios que me han permitido migrar versión de GeneXus (9, 15 y 16) e inclusive hacer mejoras en su arquitectura. Estos cambios implican hacer "refactoring" de código casi constantemente, en realidad a medida que planifico liberaciones trato de mejorar aspectos de rendimiento y mejoras varias por lo que necesito contar con insumos que me permitan demostrar las mejoras realizadas.

Cuando el año pasado comencé con algunos problemas en consumos de memoria luego de haber migrado mi aplicación de GX 9 a GX15 me puse a investigar que herramientas existían en la vuelta y me decidí por instalar Glowroot.

El uso diario que le doy y el mas sencillo de usar es el análisis de las consultas que hace mi aplicación sobre la base de datos. Básicamente al tener Glowroot instalado alcanza con ejecutar mi aplicación y luego ver las consultas que genera, aquí dejo un ejemplo de una ejecución de una parte del sistema que tenía que cambiar: 

Sin optimizar


Luego de optimizar y hacer refactoring ejecute nuevamente mi aplicación y consulte las consultas que había realizado a la base y pude verificar que los cambios que hice realmente bajaron la cantidad de consultas mejorando el rendimiento de código que había modificado.

Optimizada



La información con la que cuento en Glowroot con respecto a las consultas que realizo sobre la base me permiten estudiar y verificar la cantidad de veces que se ejecuta una consulta aparte de los tiempos de cada una. Realmente es algo muy sencillo de utilizar y que rápidamente puedo verificar que las consultas que se están ejecutando son las que realmente quiero que se hagan. 

El ejemplo que puse arriba es algo muy sencillo en donde mejore el código pero lo que quiero mostrar es que la herramienta me permite consultar rápidamente que consultas hago, la cantidad, el tiempo y en que consiste cada una. 

El Glowroot es una herramienta potente que me permite analizar el rendimiento de la memoria y muchas cosas mas. Este ejemplo es una de las cosas mas básicas que tiene esta herramienta, en mi caso la uso a diario y la comparto para que puedan aprovecharla como lo hago a diario.

martes, agosto 21, 2018

Instalando Glowroot (Open source Java APM)

Estoy investigando algunas de las herramientas Open Source para APM y entre las que encontré me decidí por Glowroot por loq ue voy a enumerar los pasos a seguir para realizar la instalación y dejarlo funcionando para evaluarlo como corresponde.

Los pasos a seguir son los siguientes:
1) Hacer la descarga del sitio de Glowroot
2) Descomprimir y copiar el contenido al equipo o servidor donde se va a ejecutar la aplicación. En mi caso copie la carpeta en el mismo lugar donde tengo las carpetas de Tomcat en un servidor Linux.


3) Modificar el archivo de Tomcat para que levante la aplicación, en mi instalación modifique el archivo catalina.sh del tomcat pero va a depender de la instalación de cada equipo. independientemente del archivo la línea a agregar es la siguiente:
export JAVA_OPTS="-javaagent:/softgxjava/glowroot/glowroot.jar"

4) Si quiero acceder desde otro equipo que no sea el nuestro hay que habilitar esto en el archivo de configuración de glowroot.jar que se encuentra en el mismo lugar que el archivo glowroot.jar. El archivo de configuración es: admin.json
Hay que modificar el bindAddress a "0.0.0.0", la sección web completa quedaría de la siguiente manera:
  "web": {
    "port": 4000,
    "bindAddress": "0.0.0.0",
    "contextPath": "/",
    "sessionTimeoutMinutes": 30,
    "sessionCookieName": "GLOWROOT_SESSION_ID"
  }

5) Habilitar el firewall si se esta trabajando en un Linux y recordar que por defecto el puerto en el que atiende la aplicación web de Glowroot es el 4000. Para habilitar el firewall se puede hacer lo siguiente:

> firewall-cmd --permanent --zone=public --add-port=4000/tcp
> firewall-cmd --reload

6) Acceder a la URL desde el Browser, si la instalación la hice local entro con: http://localhost:4000


Ahora que lo tenemos on-line solo nos queda comenzar a evaluar la herramienta y ver si cumple con nuestras necesidades. En breve subo mis conclusiones sobre este herramienta.





Gestión de rendimiento de aplicaciónes (APM)

Desde hace mas de un año varios clientes y colegas están hablando del Monitoreo de Rendimiento de las aplicaciones o Gestión de Rendimiento según la traducción que se haga de APM (Application Performance Management).

La realidad es que es algo que se engloba dentro de lo que hacemos cuando tenemos problemas de performance en nuestras aplicaciones. Cada desarrollador intenta resolver esto como puede o utilizando las herramientas que están a su alcance.

Investigando un poco pude descubrir el mundo de cosas que esta detrás de APM y que según las recomendaciones los desarrolladores tenemos que comenzar a utilizar herramientas de APM para mejorar nuestras aplicaciones, aparte de descubrir los posibles problemas que seguramente vamos a tener en producción.

En la empresa que trabajo utilizan la herramienta NewRelic pero es paga y me parece compleja de configurar o muy pesada para poder utilizarla en mis desarrollos. Dado que siempre me apoyo en el mundo open source busque y encontré un artículo que habla de 5 herramientas open source que se deben utilizar cuando monitoreamos aplicaciones.

Les dejo el artículo: Java Performance Monitoring: 5 Open Source APM Tools You Should Know

En mi caso de las 5 APM Tools me decidí por Glowroot por su simplicidad a la hora de configurar y los datos que me muestra. Por ahora la voy a testear para ver si cumple con mis necesidades.