martes, 14 de octubre de 2008

Tuning de motor de JSP en Glassfish: Configuración para entorno de producción

Como continuación del post Glassfish V2: Performance Tuning, Tips & Tricks, a continuación pego algunos parámetros óptimos para entornos productivos en Glassfish V2. Recordad que Glassfish viene configurado por defecto "para desarrollo" y que pueden hacerse unos cuantos tunings para producción.

En el mencionado post están todos, amén de los parámetros generales de lanzamiento de las JVM que ya recomendé en el post JVM tuning: Parámetros de lanzamiento de JVM: Sun Hotspot.

Esta vez toca la configuración de nuestra aplicación web, en lo que concierne al motor de JSP. Los parámetros óptimos en mi experiencia y necesidades son:

[fichero sun-web.xml]:

(...)
<jsp-config>

<property name="development" value="false">
<description>If set to true, enables development mode, which allows JSP files to be checked for modification. Specify the frequency at which JSPs are checked using the modificationTestInterval property.</description>
</property>

<property name="usePrecompiled" value="true">
<description>
If set to true, an accessed JSP ile is not compiled. Its precompiled servlet class is used instead. It is assumed that JSP files have been precompiled, and their corresponding servlet classes have been bundled in the web application’s WEB-INF/lib or WEB-INF/classes directory.</description>
¡¡¡OJO!!!! Si se pone a true, hay que compilarlos a mano con jspc y dejarlos en el directorio indicado. En nuestro caso, lo ponemos a false pero al desplegar la aplicación en el servidor de aplicaciones, marcamos el check "Precompile JSP" en la consola, para que se haga en ese momento...
</description>
</property>

<property name="mappedfile" value="false">
<description>If set to true, generates static content with one print statement per input line, to ease debugging.</description>
</property>

<property name="suppressSmap" value="true">
<description>If set to true, generation of SMAP information for JSR 45 debugging is suppressed.</description>
</property>

<property name="fork" value="false">
<description>Specifies that Ant forks the compiling of JSP files, using a JVM machine separate from the one in which Tomcat is running.</description>
</property>

<property name="classdebuginfo" value="false">
<description>Specifies whether the generated Java servlets are compiled with the debug option set (-g for javac).</description>
</property>

<property name="xpoweredBy" value="false">
<description>If set to true, the X-Powered-By response header is added by the generated servlet. Buena idea para ocultar el AS por motivos de seguridad</description>
</property>

<property name="keepgenerated" value="true">
<description>If set to true, keeps the generated Java files. If false, deletes the Java files.</description>
</property>

</jsp-config>
(...)

Ni que decir tiene que estos los fuerzo así porque sus valores por defecto son los contrarios. Para más información no seas vago y abre los PDF de la documentación...

Nota: me extrañaría mucho que estas mismas opciones no funcionaran "tal cual" en Tomcat 5.5 y superiores... Por cierto que todavía no me queda claro si GF tiene un Tomcat dentro, si está inspirado en Tomcat, o si simplemente han respetado las propiedades de configuración para eliminar resistencias al cambio... :-)

No hay comentarios: