Personalizar variables de arranque de Java en Apache-Tomcat

En muchas ocasiones utilizamos instancias de Apache-Tomcat en las que utilizamos las variables JAVA_OPTS con valores similares. Para poder configurar esta parte de la instalación podemos usar un fichero que generalmente no viene creado dentro del propio Apache-Tomcat pero que, si es encontrado se usa, llamado setenv.sh (sistemas unix) o setenv.bat (sistemas windows). De esta forma podemos pasar este fichero entre nuestras distintas instalaciones con unas básicas modificaciones.

El fichero que uso actualmente para mis instalaciones de Alfresco bajo Apache-Tomcat contiene las variables necesarias para optimizar el funcionamiento de la JVM de Sun.

Aquí está el contenido de dicho fichero con sus respectivos comentarios:

# Entorno de ejecución
# 9/06/2009 (Fernando González)

# Variables
LD_LIBRARY_PATH=/usr/local/apr/lib
JAVA_HOME=”/opt/java64/jdk1.6.0_14″
JRE_HOME=”${JAVA_HOME}/jre”
CATALINA_HOME=”/opt/alfresco/tomcat5525alfresco320″
CATALINA_BASE=”${CATALINA_HOME}”
GC_LOG=”${CATALINA_HOME}/logs/gc.log”
CATALINA_TMPDIR=”${CATALINA_HOME}/temp”
ALFRESCO_HOME=”${CATALINA_HOME}”

JAVA_OPTS=””
JAVA_OPTS=”-Djava.library.path=/usr/local/apr/lib”

# Server Hotspot VM
JAVA_OPTS=”${JAVA_OPTS} -server”

# Modelo de datos de x bits -d32/-d64
JAVA_OPTS=”${JAVA_OPTS} -d64″

# Heap Size
JAVA_OPTS=”$JAVA_OPTS -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31″
JAVA_OPTS=”${JAVA_OPTS} -Xms512m -Xmx640m”
JAVA_OPTS=”${JAVA_OPTS} -Xss128k”

# Perm Size – Total permanent generation
JAVA_OPTS=”${JAVA_OPTS} -XX:PermSize=128m -XX:MaxPermSize=128m”

# Young Generation
JAVA_OPTS=”${JAVA_OPTS} -XX:+UseParNewGC”

# Old Generation – Low Pause Collector (default: Mark-Compact Collector)
JAVA_OPTS=”${JAVA_OPTS} -XX:+UseConcMarkSweepGC”

# Permanent Generation – Compact Mark Sweeping Collector
JAVA_OPTS=”${JAVA_OPTS} -XX:+CMSClassUnloadingEnabled”

# Intervalo en milisegundos para GC
JAVA_OPTS=”${JAVA_OPTS} -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.rmi.dgc.client.gcInterval=3600000″

# Codificación
JAVA_OPTS=”${JAVA_OPTS} -Dfile.encoding=UTF-8″

# Log para acciones de GC
CATALINA_OPTS=”${CATALINA_OPTS} -Xloggc:${GC_LOG}”

# Sincronización basada en hilo LWP
CATALINA_OPTS=”${CATALINA_OPTS} -Xconcurrentio”

# Comprobaciones adicionales
CATALINA_OPTS=”${CATALINA_OPTS} -Xcheck:jni”

# Monitorización JMX
CATALINA_OPTS=”${CATALINA_OPTS} -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/jre/lib/management/jmxremote.access”

# Parámetros para Alfresco desde java
JAVA_OPTS=”${JAVA_OPTS} -Dalfresco.home=${ALFRESCO_HOME}”

7 replies on “Personalizar variables de arranque de Java en Apache-Tomcat”

  1. Hoa FEGOR,
    muchas gracias por el blog.

    Tenemos en nuestro entorno de producción un alfresco, que constantemente está dando errores de memoria y creo que no está bien configurado.
    Por favor, me podrías ayudar ???

    Alfresco
    Versión: Enterprise Network – v2.2.3

    RAM: 16 GB

    JAVA_OPTS: -server -Xss2m -Xms4196m -Xmx8192m -XX:MaxPermSize=1G -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:ParallelGCThreads=8

    java.lang.OutOfMemoryError: Java heap space

  2. Hola, en este blog no doy soporte sobre Alfresco directamente, pero antes de nada hay que saber que versión de Java estás usando, que sistema operativo así como su arquitectura. Luego monitorizar al menos con JConsole la actividad que tiene hasta que se produce el “Out of memory” y finalmente actuar y poner las variables o parámetros necesarios y volver a empezar.

    Además esa versión de Alfresco queda ya fuera del soporte de la propia compañía creo recordar.

Leave a Reply to Benjamin A Rodriguez R. Cancel reply

Your email address will not be published. Required fields are marked *