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:
/etc/init.d/Tomcat6
./usr/share/Tomcat6/bin/catalina.sh
./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?
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.
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
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"
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.