Análisis de rendimiento (Profiling) de aplicaciones web con eclipse

0
24471

Análisis de rendimiento (Profiling) de
aplicaciones web con eclipse

Ya sea que nuestra aplicación
web esté destinada desde sus inicios a un gran número
de usuarios simultáneos o que sean pocos sus usuarios
iniciales pero potencialmente su número pueda crecer, debemos
estar preparados para que no “muera de éxito”.

Para ello, tras finalizar su desarrollo
utilizaremos herramientas de pruebas de carga como Grinder, JMeter,
etc u otras soluciones comerciales. Con estas herramientas
simularemos la utilización de nuestra aplicación por
parte de múltiples usuarios concurrentes. ¿pero cómo
monitorizamos nuestra aplicación web?

Las herramientas de Profiling se
utilizan para monitorizar el rendimiento de una aplicación.
Habitualmente, constan de dos módulos: un agente y un cliente.
El primero se instala dentro de la aplicación a monitorizar y
el segundo se conecta al mismo para leer las monitorizaciones.

La plataforma de desarrollo Eclipse
(www.eclipse.org)
está compuesta por proyectos, aunque seguramente lo más
conocido es el IDE de desarrollo Java (“Eclipse Project”,
http://www.eclipse.org/eclipse/) y sus herramientas para aplicaciones
Web (“Eclipse Web Tools Platform Project”,
http://www.eclipse.org/webtools/).
Pero también incluye un proyecto específico para
monitorización de aplicaciones llamado “Eclipse Test and
Performance Tools Platform”. Vamos a ver en este artículo
como instalar y configurar Eclipse TPTP para monitorizar una
aplicación Web que se ejecuta en Tomcat.

Quizás una de las métricas
de rendimiento en las que Tomcat no sale bien parado es en el
servicio de contenidos estáticos. Menos aún frente a
los rendimientos que tiene Apache Web Server.

¿y porqué elegir entre
ellos cuando fácilmente podemos tener a ambos trabajando en lo
que mejor sabe hacer cada uno? De esta forma, el Apache Web Server
recibirá todas las peticiones del usuario resolviendo las de
contenido estático y delegando las de contenido dinámico
(JSPs, Servlets, etc.).

Dado que la instalación de
Tomcat 5.5 y Eclipse no tiene secretos y ya existen numerosos
tutoriales sobre el tema, pasamos directamente a su configuración
para Profiling. La misma consiste en:

  • Instalar y configurar el Eclipse
    TPTP

  • Instalar y configurar el Agente

  • Lanzar el Tomcat en modo profiling

  • Monitorizar desde Eclipse

Instalar y configurar el Eclipse TPTP

El Eclipse TPTP se puede instalar
utilizando el instalador de Eclipse (Callisto) que está en el
menú Help / Software Updates / Find & Install / Search for
new features to install y seleccionando “Test and Performance
Tools Platform”. Pero mi experiencia personal es que el proceso
fué muy lento y tortuoso porque los mirrors no están
muy sincronizados o contienen jars corruptos. La alternativa que
recomiendo es ir a http://www.eclipse.org/tptp/home/downloads/
y seleccionar “Download now: TPTP all-in-one package, Windows”
(o la distribución Linux correspondiente).


Este
Zip lo vamos a descomprimir directamente sobre nuestra instalación
de Eclipse es decir que las carpetas “features” y
“plugins” del zip “sobreescribirán”
las de nuestro Eclipse. Esta operación incluirá los
paquetes necesarios para que cuando iniciemos el Eclipse la próxima
vez ya cuente con el TPTP.

Instalar y configurar el Agente

Desde la misma página de
download (http://www.eclipse.org/tptp/home/downloads/)
descargaremos también el Agente indicando la plataforma sobre
la que lo ejecutaremos.


El
Zip lo descomprimiremos en alguna carpeta (C:\java\eclipse\TPTPAgent)
y procederemos a incluir en el path la carpeta bin. Para ello, en
Windows desde las propiedades de Mi Pc seleccionamos Opciones
Avanzadas / Variables de Entorno y en Variables del Sistema buscamos
PATH y seleccionamos Modificar para incluir al final
C:\java\eclipse\TPTPAgent\bin.

A continuación, desde la carpeta
bin iniciamos ACServer.exe, que lanzará una ventana de consola
sin ningún tipo de mensaje. El Agent Controller es responsable
por la coordinación de agentes y clientes. Si queremos
comprobar que todo funciona, podemos iniciar desde la carpeta bin la
aplicación SampleClient.exe y obtenemos:


Con
esto nos aseguramos que un cliente puede conectarse con el Agent
Controller.

Lanzar el Tomcat en modo profiling

Cuando iniciamos Eclipse, desde el menú
Window / Preferences quitamos el check de Enable que se muestra a
continuación y presionar OK.


Si
estamos lanzando el Tomcat desde Eclipse, lanzarlo en modo Profiling
es tan simple como iniciarlo con el botón “Start the
server in Profile Mode”:


Sino, debemos incluir en la variable de sistema JAVA_OPTS el comando
“-XrunpiAgent:server=enabled”.

Monitorizar desde Eclipse

Finalmente, debemos cambiar de
perspectiva haciendo click en:


y
seleccionando:


Ahora
seleccionamos el desplegable de Profile y la opción
“Profile…”:


Y
seleccionamos primero “Attach – Java Process” y
después el ícono de “New launch configuration”


Entonces
seleccionamos el localhost y presionamos “Test Connection”
para asegurarnos de que se conecta:


Sin
cerrar la ventana, seleccionamos la pestaña Agents:


Añadimos
el agente y dejará de aparecer el mensaje de error de arriba a
la izquierda. Ahora seleccionamos la pestaña Monitor:


Donde
seleccionaremos los análisis a monitorizar y presionaremos el
botón Profile. Veremos entonces:


Comenzamos
entonces a navegar o a simular carga en nuestra aplicación y
hacemos doble click en los dos análisis:


De
aquí podemos ir deduciendo qué objetos crecen en número
o uso de memoria constantemente, cuales usan más la CPU o la
memoria, etc.

Conclusiones

El TPTP crece día a día
añadiendo soporte a nuevas monitorizaciones, herramientas de
reporting, etc. También existen soluciones comerciales que
añaden funcionalidad.

Esta primera toma de contacto con la
solución nos da una idea de la magnitud de este
proyecto. Su propia web contiene suficiente documentación para
continuar aprendiendo.

Algunas notas a tener en cuenta cuando
comencemos nuestra tarea de optimización:

  • Las herramientas de pruebas de carga (load testing tools como
    JMeter, Grinder, etc), el eclipse con TPTP y el servidor de
    aplicaciones deben ejecutarse físicamente en ordenadores
    distintos ya que su ejecución interferirá en las
    monitorizaciones de rendimiento.

  • Como nos dice la Ley de Amdahl
    (http://es.wikipedia.org/wiki/Ley_de_Amdahl),
    comenzar optimizando lo más utilizado y que más
    recursos consume.

  • Optimizar cuando el desarrollo esté concluido y
    documentar correctamente.

Finalmente, no dudes en solicitar nuestros servicios ya que en
Autentia tenemos mucha experiencia práctica en optimizar el
rendimiento de aplicaciones medianas y grandes. Contacta con nosotros
en www.autentia.com .

Dejar respuesta

Please enter your comment!
Please enter your name here