jueves, 31 de julio de 2008

Tomcat y su memoria

Hoy hemos tenido una situación un poco molesta: un mailing masivo de un cliente ha tenido la web a punto de caerse durante media mañana. Y es que la aplicación necesita una cantidad bestial de memoria... y no la tenía asignada.

Simplemente he tenido que cambiar este parámetro, y la cosa ha ido mucho más fluida.

Así que si alguna vez tenéis que hacerlo, ahí va el cómo.

El parámetro a modificar es Xmx, y hay que modificarlo desde el binario que arranca el demonio (en linux). Es simplemente localizarlo y cambiar el valor que tiene a continuación

Servidor:/var/lib/tomcat5/conf# grep -ir Xmx /etc/init.d/tomcat5
CATALINA_OPTS="-Djava.awt.headless=true -Xmx128M"

En mi caso (es la configuración por defecto) estaba a 128Mb. Y lo he subido a 512.

Pues nada, después de hacer la modificación reiniciamos el tomcat (no vale un reload porque sólo carga la configuración, no para y arranca el proceso) y ya lo tenemos.
Ah! y además de verse en el script, también se ve con un ps:

Servidor:/var/lib/tomcat5/conf# ps aufx | grep tomcat

tomcat5 17124 0.0 0.0 7696 1768 pts/0 S 11:27 0:00 \_ /usr/sbin/rotatelogs /var/lib/tomcat5/logs/catalina_%F.log 86400
tomcat5 17131 73.5 6.1 721564 130332 pts/0 Sl 11:27 0:16 /usr/local/jdk1.6.0_04/bin/java -Djava.awt.headless=true -Xmx512M-Djava.endorsed.dirs=/usr/share/tomcat5/common/endorsed -classpath /usr/local/jdk1.6.0_04/lib/tools.jar:/usr/share/tomcat5/bin/commons-launcher.jar:/usr/share/tomcat5/bin/commons-logging-api.jar:/usr/share/tomcat5/bin/jmx.jar:/usr/local/jdk1.6.0_04/jre//lib/jcert.jar:/usr/local/jdk1.6.0_04/jre//lib/jnet.jar:/usr/local/jdk1.6.0_04/jre//lib/jsse.jar:/usr/share/tomcat5/bin/bootstrap.jar:/usr/share/tomcat5/bin/commons-logging-api.jar -Djava.security.manager -Djava.security.policy==/var/lib/tomcat5/conf/catalina.policy -Dcatalina.base=/var/lib/tomcat5 -Dcatalina.home=/usr/share/tomcat5 -Djava.io.tmpdir=/var/lib/tomcat5/temp org.apache.catalina.startup.Bootstrap start


Ah, por cierto, al igual que hay una variable para la memoria máxima que puede asignarse a tomcat para que la utilice, también hay una memoria mínima. La variable es Xms.

No hay comentarios: