Configuración de Tomcat 6 en ubuntu

Hace ya algún tiempo teníamos quejas internas por mal funcionamiento en uno de nuestros servidores. Resulta que Tomcat estaba “colgándose”, teniendo problemas esporádico o, sencillamente, dejando de funcionar (desde la aplicación más simple hasta la más compleja). Se había llegado al punto que había que reiniciar el equipo entero para que volviera a funcionar.

Obviamente, nunca había tenido posibilidad de revisar el asunto hasta que tuve que hacer una presentación y a las 2:00 am me estaban pidiendo que revisara qué problemas había porque no era posible hacer un despliegue de una aplicación actualizada. 🙁
Me sorprende que ninguno hubiera visto unos errores en el log de catalina que decían, claramente.

OutOfMemoryException

Al entrar, después de dar muchas vueltas (habré estado varias horas, seriamente hablando) me encontré con que se había configurado el entorno del tomcat desde un script separado… ¡Claro! ¿Cómo podría llegar a encontrarlo?

La memoria configurada era de 256Mb, eso obviamente no alcanza ni para arrancar la aplicación más pedorra disponible en el universo… Menos que menos una de Grails :).
Nosotros en nuestras máquinas de desarrollo tenemos configurado, generalmente algo así:

-XX:MaxPermSize=300m -Xmx1024m -server -Djava.awt.headless=true \\ 
-Duser.timezone=UTC -Duser.language=es -Duser.region=ES
  • el PermSize se usa para generar código dinámico (muy común en el metalenguaje de Grails)
  • el Xmx habla de la cantidad de memoria de “heap” para el procesamiento de información… en otras palabras, memoria de trabajo
  • java.awt.headless y server le indicamos a la VM que no se le ocurra mandar ventanitas que no tenemos ninguna forma de verlas

El resto de los parámetros los hemos ido construyendo a medida que ganamos experiencia…

  • user.timezone se usa para forzar una hora de sistema siempre igual y no depender de la configurada del OS
  • user.language y user.region tienen una función similar a la nombrada antes

Espero que nadie tenga problemas nuevamente con esto. Me costó bastante encontrar el script
/opt/tomcat/bin/setenv.sh que tenía forzada una configuración de JAVA_OPTS 🙁


Discussion Area - Leave a Comment