¿Dónde configurar las opciones de almacenamiento dinámico de Java (por ejemplo, -Xmx) para Tomcat 6 en Ubuntu 9.04?

36

Estoy ejecutando Tomcat usando el paquete tomcat6 de Ubuntu 9.04, que hace un demonio de Tomcat usando jsvc. Me gustaría saber la forma correcta de configurar las opciones -Xmxde almacenamiento dinámico de Java como para Tomcat. Me gustaría poner la configuración donde sea más estilísticamente correcta, y donde sea menos probable que las actualizaciones de paquetes de Ubuntu sobrescriban.

Las opciones que veo ahora:

  • Codifícalos en algún lugar /etc/init.d/tomcat6.
  • Codifícalos en algún lugar /usr/share/tomcat6/bin/catalina.sh.
  • Cree una línea /usr/share/tomcat6/bin/startup.shpara configurar CATALINA_OPTS para que tenga los indicadores deseados, y luego exporte CATALINA_OPTS como una variable de entorno. (Esto parece que será recogido por catalina.sh).

La última opción suena como la mejor, y se recomienda (sin explicación de por qué) en el aumento del espacio de almacenamiento dinámico de Java en el script de inicio de Tomcat . Pero quería obtener una segunda opinión. ¿Alguien quiere confirmar que no hay una mejor manera?

Chris
fuente

Respuestas:

37

Al menos en Ubuntu 10.04, /etc/init.d/tomcat6 sources / etc / default / tomcat6 si existe. Ahí es donde pongo mis anulaciones, y creo que generalmente es la forma "aprobada" de hacer tales cambios.

natacado
fuente
77
/ etc / default / tomcat6 es el lugar adecuado
Amala
La configuración de +1 siempre debe hacerse /etcsi es posible.
Marcus Downing el
2
En CentOS, la ubicación que encontré fue /etc/tomcat6/tomcat6.conf
khylo
1
En CentOS 6.4, /etc/tomcat6/tomcat6.confes un archivo grande y no quería poner mis personalizaciones personales allí, así que lo creé $CATALINA_HOME/bin/setenv.shy obtuve /usr/sbin/tomcat6. Espero que esto ayude a los usuarios de CentOS (sí, sé que la pregunta original era para Ubuntu).
DuffJ
@khylo sí, me tomó un poco de tiempo resolverlo. parece que en CentOS el /etc/init.d/tomcat6 está llamando a / usr / sbin / tomcat6 que NO llama a catalina.sh sino que simplemente llama directamente a la clase bootstrap de tomcat (a diferencia de Ubuntu /etc/init.d/tomcat6 que está llamando a catalina.sh)
Eran Medan
16

Si busca en el directorio bin de su instalación, verá los scripts catalina.sh o .bat. Si observa estos, verá que ejecutan un script setenv.sh o setenv.bat respectivamente, si existe, para establecer variables de entorno. Las variables de entorno relevantes se describen en los comentarios en la parte superior de catalina.sh/bat. Para usarlos, cree, por ejemplo, un archivo $ CATALINA_HOME / bin / setenv.sh con contenido

export JAVA_OPTS="-server -Xmx512m"

Para Windows necesitará, en setenv.bat, algo como

set JAVA_OPTS=-server -Xmx768m

Esto es cierto desde Tomcat 5.5 a 7. Original answear https://stackoverflow.com/questions/286007/how-to-tune-tomcat-5-5-jvm-memory-settings-without-using-the-configuration-progra

viper33m
fuente
1
Funciona bien para sistemas sin / etc / default / include, por ejemplo, FreeBSD.
vadipp
7

Busque /etc/tomcat6/tomcat6.conf, que tiene los gustos de JAVA_OPTS listos y esperando que lo descomente (pero solo si lo tiene, estoy usando Centos, no Ubuntu).

# System-wide configuration file for tomcat6 services
# This will be sourced by tomcat6 and any secondary service
# Values will be overridden by service-specific configuration
# files in /etc/sysconfig
#
# Use this one to change default values for all services
# Change the service specific ones to affect only one service
# (see, for instance, /etc/sysconfig/tomcat6)
#
...
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
KCD
fuente
44
Esto parece ser correcto para la versión CentOS / yum / RPM de tomcat. Para el paquete Ubuntu / apt-get, setenv.sh es la forma correcta de hacerlo AFAIK
Eran Medan
sí, KCD es correcto, para centOS tomcat6.conf funciona bien. Comprobado con el comando ps aux | grep tomcat muestra el parámetro con los valores que configuré.
Manikandan Arunachalam
2

La forma más elegante que he encontrado hasta ahora es editar /etc/init.d/tomcat6 y agregar esto en la parte superior del archivo:

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

Las otras opciones que describí en mi pregunta no parecen funcionar. Después de estudiar el script y experimentar un poco más, ahora dudo que /usr/share/tomcat6/bin/catalina.sh y /usr/share/tomcat6/bin/startup.sh jueguen algún papel en el inicio de tomcat con el paquete de Ubuntu tomcat6. En lugar; /etc/init.d/tomcat6 reemplaza completamente cualquier trabajo que normalmente pueda realizar catalina.sh/startup.sh.

Todavía estoy un poco preocupado por perder estas opciones de configuración en alguna actualización futura del paquete, pero supongo que si eso sucede, sería bastante fácil restaurarlas.

Chris
fuente
¿Se puede configurar (exportar) en el .bashrc para cualquier usuario que desee que ejecute Tomcat? [disculpe la gramática horrible] Eso sobreviviría a las actualizaciones del paquete Tomcat, etc. Supongo que la función "ejecutar como" en init iniciará el shell normal para ese usuario y retomará la tarea. Ver también howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu
David J. Liszewski