web-dev-qa-db-fra.com

Où définir Java options de tas (par exemple -Xmx) pour Tomcat 6 sous Ubuntu 9.04?

J'exécute Tomcat en utilisant le paquet Tomcat6 d'Ubuntu 9.04, qui fait un démon de Tomcat en utilisant jsvc. Je voudrais connaître la bonne façon de définir Java options de tas comme -Xmx pour Tomcat. Je voudrais placer la configuration là où elle est la plus stylistiquement correcte et où elle est le moins susceptible d'être écrasée par les mises à jour du paquet Ubuntu.

Les options que je vois en ce moment:

  • Codez-les quelque part dans /etc/init.d/Tomcat6.
  • Codez-les quelque part dans /usr/share/Tomcat6/bin/catalina.sh.
  • Créez une ligne dans /usr/share/Tomcat6/bin/startup.sh pour définir CATALINA_OPTS pour avoir les indicateurs souhaités, puis exporter CATALINA_OPTS en tant que variable d'environnement. (On dirait qu'il sera récupéré par catalina.sh.)

La dernière option semble être la meilleure, et elle est préconisée (sans explication pourquoi) à Augmentation de l'espace de mémoire de Java dans le script de démarrage de Tomcat . Mais je voulais avoir un deuxième avis. Quelqu'un veut-il confirmer qu'il n'y a pas de meilleure façon?

36
Chris

Au moins sur Ubuntu 10.04, /etc/init.d/Tomcat6 sources/etc/default/Tomcat6 s'il existe. C'est là que je mets mes dérogations, et je crois que c'est généralement la façon "approuvée" d'apporter de tels changements.

37
natacado

Si vous regardez dans le répertoire bin de votre installation, vous verrez des scripts catalina.sh ou .bat. Si vous les regardez, vous verrez qu'ils exécutent respectivement un script setenv.sh ou setenv.bat, s'il existe, pour définir les variables d'environnement. Les variables d'environnement pertinentes sont décrites dans les commentaires en haut de catalina.sh/bat. Pour les utiliser, créez par exemple un fichier $ CATALINA_HOME/bin/setenv.sh avec le contenu

export Java_OPTS="-server -Xmx512m"

Pour Windows, vous aurez besoin, dans setenv.bat, de quelque chose comme

set Java_OPTS=-server -Xmx768m

Cela est vrai de Tomcat 5.5 à 7. Réponse d'origine https://stackoverflow.com/questions/286007/how-to-tune-Tomcat-5-5-jvm-memory-settings-without-using-the -configuration-progra

16
viper33m

Recherchez / etc/Tomcat6/Tomcat6.conf qui a les goûts de Java_OPTS prêts et vous attend pour décommenter (mais seulement si vous l'avez du tout, j'utilise Centos pas 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"
7
KCD

La manière la plus élégante que j'ai trouvée jusqu'à présent est d'éditer /etc/init.d/Tomcat6 et d'ajouter ceci en haut du fichier:

# local config settings
Java_OPTS="-Xms5000m -Xmx13000m

Les autres options que j'ai décrites dans ma question ne semblent pas fonctionner. Après avoir étudié le script et expérimenté un peu plus, je doute maintenant que /usr/share/Tomcat6/bin/catalina.sh et /usr/share/Tomcat6/bin/startup.sh jouent un rôle dans le démarrage de Tomcat avec le paquet Tomcat6 Ubuntu. Au lieu; /etc/init.d/Tomcat6 remplace complètement tout travail qui pourrait normalement être effectué par catalina.sh/startup.sh.

Je suis toujours un peu inquiet de perdre ces options de configuration dans une future mise à jour de package, mais je suppose que si cela se produit, il serait assez facile de les restaurer.

2
Chris