Slimming Básico
de JBoss
Introducción
En Autentia usamos el servidor de aplicaciones JBoss
en varios de nuestros proyectos. Los reinicios de servidor forma parte
del ciclo de desarrollo de aplicaciones web, y nos hemos preguntado si
puede optimizarse el tiempo de (re)carga de, en este caso, JBoss. Para
ello he seguido unas pautas indicadas en la wiki de
JBoss, y muestro los resultados. En función de la
plataforma de desarrollo, recursos software y hardware los resultados
pueden variar; puede aparecer un tutorial complementado a este; sin
embargo os animamos a que lo probéis por vosotros mismos.
Entorno del test
- Toshiba Equium C2Duo 1.5GH, 3GB Ram, HDD SATA
- Debian unstable [07/02/2007]
- Eclipse Europa EE 3.3.1.1
- JBoss-4.2.2.GA con el agrumento: -c
default - JDK 1.5.0_11 con -Xms128m -Xmx512m
- 1 proyecto web desplegado con tecnologías
JSF/MyFaces Tomahawk/EJB3/Lucene/Lius/Log4Java/MySQL.
Documentación
Utilizaré http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossASTuningSliming
(sección Slimming) como referencia, si bien la wiki aporta
más información que merece dedicarla algo
más de tiempo.
Resultados
Para estas pruebas, JBoss está configurado como servidor del
proyecto en Eclipse. Por lo tanto deplegamos (publish/deploy…) el
proyecto una primera y única vez y en adelante levantaremos
y detendremos el servidor desde el IDE, observamos los logs y anotamos
los tiempos en segundos de inicio a medida que deshabilitamos servicios
y componentes propios de jBoss sugeridos en la documentación
y que no sean aplicables a nuestro proyecto. Las pruebas son
acumulativas, y por el orden presentado:
Estado | Prueba sugerida por la documentación |
Reinicio #1 | Reinicio #2 | Promedio |
0 | Tiempo original sin slimming |
39 | 40 | 39.5 |
1 | «When not using the J2EE client deployer service» |
40 | 38 | 39 |
2 | «When not using JBossMQ (our JMS server)» |
34 | 36 | 35 |
3 | «When not using the HTTPInvoker (which lets you tunnel RMI over HTTP)» |
35 | 34 | 34.5 |
4 | «When not using XA datasources (Distributed and/or recoverable transactions)» |
34 | 36 | 35 |
5 | «If you do not need the web-console» |
35 | 35 | 35 |
6 | «If you are not using console/email monitor alerts» |
34 | 35 | 34.5 |
7 | «If you are not using rich property editors» |
34 | 34 | 34 |
8 | «If you are not using the JBoss Scheduler Manager» |
34 | 34 | 34 |
9 | «»If you do not need to use CORBA/IIOP» |
32 | 30 | 31 |
Gráficamente:
Verás que muchas de las pruebas sugeridas no se presentan en
la tabla. Para la aplicación deplegada en concreto, se
observaban trazas de excepciones en el log, reflejando errores en
dependencias de la aplicación y/o servidor o incluso
imposibilidad de arranque del mismo.
Conclusión
Es evidente que puede sacarse más partido al
slimming e hilar fino con el tunning para obtener mejores resultados,
aunque a groso modo hemos reducido el tiempo de arranque en un 20%.
Asimismo convendría hacer un muestreo más amplio
para evitar el sesgo, pero los datos presentados son reales tomando mi
plataforma de desarrollo y un proyecto actual como un ejemplo. Desde
Autentia te animamos a que partas de este tutorial para trabajar en
ello, aprender y sacar tus propias conclusiones.