Ayuda para configurar TomCat


29 de Diciembre del 2020

Buenos días,

Me presento, soy Juan Pelaez y vengo del entorno de IBM (AS400, Iseries ). Hace algún tiempo he empezado con Java como alternativa al AS400, actualmente tengo una pequeña aplicacion hecha con eclipse ( Java + MySql ) que en entorno de desarrollo va muy bien. Ahora quiero pasarla a la nube, para ello he contratado con MOCHAHOST un servicio ( basico ) donde poder alojarla con TomCat y MySql, tambien he traspasado un dominio que tenia registrado para estas historias. Hasta aqui más o menos lo tengo claro, mi GRAN duda es en la configuracion de TomCat dado que he visto que SOLO habiendo desplegado mi proyecto y arrancado el servidor sin que nadie entre ni ejecute la aplicacion está consumiendo memoria de forma progresiva, aumentando siempre ....

Tengo claro que es un problema de configuracion de TomCat, no he parametrizado nada y, por lo que he podido leer en internet hay TODO UN MUNDO para optener un buen rendimiento.

Quisiera preguntaros si alguien puede recomendarme o pasarme algun documento BASICO para empezar a parametrizar TomCat por lo menos en lo Basíco.

Muchisimas gracias por vuestra ayuda.

Juan Pelaez
[email protected]


David Carrero
12 de Agosto del 2026

Hola Juan,

El síntoma que describes (memoria subiendo poco a poco sin que nadie use la aplicación) es importante: eso descarta que sea simplemente el comportamiento normal de la JVM reservando heap según hace falta, porque si nadie hace peticiones, no debería haber nada generando basura para acumular. Antes de tocar la configuración de Tomcat, yo miraría primero tu propia aplicación:

Sospechoso número uno: algún proceso en segundo plano dentro de tu propio código. Si tienes algún Timer, ScheduledExecutorService, tarea programada, o un pool de conexiones a la base de datos que abre conexiones y no las cierra correctamente, eso puede consumir memoria de forma continua incluso sin tráfico HTTP real. Es muchísimo más común que un problema de configuración pura de Tomcat.

Configuración básica de la JVM que sí conviene ajustar, independientemente de lo anterior. En el hosting, busca dónde se define JAVA_OPTS o CATALINA_OPTS (normalmente en setenv.sh dentro de la carpeta bin de Tomcat, aunque en un hosting compartido puede que solo puedas ajustarlo desde un panel):

-Xms256m -Xmx512m -XX:+UseG1GC

-Xms es la memoria inicial reservada, -Xmx el límite máximo que la JVM puede usar. Sin límite explícito, en algunos entornos la JVM puede intentar reservar muchísima memoria según vea disponible en el sistema, lo cual en un hosting compartido con recursos limitados puede parecer «consumo descontrolado» cuando en realidad es solo una reserva generosa por defecto.

Cómo diagnosticar si es un leak real o solo apariencia: si tienes acceso, activa el Manager App de Tomcat (o pide al hosting que te dé acceso a métricas), y mira específicamente el uso de heap tras forzar un Full GC. Si después de forzar la recolección de basura la memoria vuelve a un nivel bajo y estable, era solo el comportamiento normal de la JVM acumulando basura sin recolectar todavía. Si sigue subiendo incluso después de forzar el GC, ahí sí hay un leak real en tu código, y ninguna configuración de Tomcat lo va a arreglar, hay que encontrar qué objeto se está quedando referenciado sin liberarse nunca.

David Carrero