Dove impostare le opzioni heap java (ad esempio -Xmx) per Tomcat 6 in Ubuntu 9.04?


36

Sto eseguendo Tomcat usando il pacchetto tomcat6 da Ubuntu 9.04, che crea un demone da Tomcat usando jsvc. Mi piacerebbe conoscere il modo corretto di impostare le opzioni heap Java come -Xmxper Tomcat. Vorrei mettere la configurazione ovunque sia stilisticamente corretta, e ovunque sia meno probabile che venga sovrascritta dagli aggiornamenti del pacchetto Ubuntu.

Le opzioni che vedo adesso:

  • Li codifica da qualche parte dentro /etc/init.d/tomcat6.
  • Li codifica da qualche parte dentro /usr/share/tomcat6/bin/catalina.sh.
  • Creare una riga /usr/share/tomcat6/bin/startup.shper impostare CATALINA_OPTS in modo che abbia i flag desiderati, quindi esportare CATALINA_OPTS come variabile di ambiente. (Sembra che verrà raccolto da catalina.sh.)

L'ultima opzione suona come la migliore ed è raccomandata (senza spiegazione del perché) all'aumento dell'heapspace di Java nello script di avvio di Tomcat . Ma volevo ottenere una seconda opinione. Qualcuno vuole confermare che non esiste un modo migliore?

Risposte:


37

Almeno su Ubuntu 10.04, /etc/init.d/tomcat6 fonti / etc / default / tomcat6 se esiste. È qui che ho messo le mie sostituzioni e credo che sia generalmente il modo "approvato" per apportare tali modifiche.


7
/ etc / default / tomcat6 è il posto giusto
Amala,

La configurazione +1 dovrebbe sempre essere eseguita, /etcse possibile.
Marcus Downing,

2
Su CentOS, la posizione che ho trovato era /etc/tomcat6/tomcat6.conf
khylo

1
Su CentOS 6.4, /etc/tomcat6/tomcat6.confè un file di grandi dimensioni e non volevo inserire le mie personalizzazioni, quindi l'ho creato $CATALINA_HOME/bin/setenv.she acquistato /usr/sbin/tomcat6. Spero che questo aiuti gli utenti di CentOS (sì, so che la domanda originale era per Ubuntu).
DuffJ,

@khylo sì, mi ci è voluto un po 'per capirlo. sembra in CentOS che /etc/init.d/tomcat6 sta chiamando / usr / sbin / tomcat6 che NON sta chiamando catalina.sh ma chiama semplicemente la classe bootstrap di tomcat direttamente (al contrario di Ubuntu /etc/init.d/tomcat6 che sta chiamando catalina.sh)
Eran Medan il

16

Se guardi nella directory bin dell'installazione vedrai gli script catalina.sh o .bat. Se li guardi vedrai che eseguono rispettivamente uno script setenv.sh o setenv.bat, se esiste, per impostare le variabili di ambiente. Le variabili d'ambiente rilevanti sono descritte nei commenti all'inizio di catalina.sh/bat. Per usarli creare, ad esempio, un file $ CATALINA_HOME / bin / setenv.sh con i contenuti

export JAVA_OPTS="-server -Xmx512m"

Per Windows avrai bisogno, in setenv.bat, di qualcosa di simile

set JAVA_OPTS=-server -Xmx768m

Questo è vero da 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


1
Funziona bene con i sistemi senza / etc / default / include, ad esempio FreeBSD.
vadipp,

7

Cerca /etc/tomcat6/tomcat6.conf che ha file simili a JAVA_OPTS pronti e in attesa di decommentarli (ma solo se ce l'hai, sto usando Centos non 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"

4
Questo sembra essere corretto per la versione CentOS / yum / RPM di Tomcat. Per il pacchetto Ubuntu / apt-get setenv.sh è il modo giusto di andare AFAIK
Eran Medan

sì, KCD è corretto, per centOS tomcat6.conf funziona bene. Controllato con il comando ps aux | grep tomcat mostra il parametro con i valori impostati.
Manikandan Arunachalam,

2

Il modo più elegante che ho trovato finora è modificare /etc/init.d/tomcat6 e aggiungere questo nella parte superiore del file:

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

Le altre opzioni che ho delineato nella mia domanda non sembrano funzionare. Dopo aver studiato la sceneggiatura e aver sperimentato ancora un po ', ora dubito che /usr/share/tomcat6/bin/catalina.sh e /usr/share/tomcat6/bin/startup.sh abbiano un ruolo nell'avvio di Tomcat con il pacchetto Ubuntu tomcat6. Anziché; /etc/init.d/tomcat6 sostituisce completamente qualsiasi lavoro che potrebbe essere normalmente svolto da catalina.sh/startup.sh.

Sono ancora un po 'preoccupato di perdere queste opzioni di configurazione in un futuro aggiornamento del pacchetto, ma immagino che se ciò accadesse, sarebbe abbastanza facile ripristinarle.


Questo può essere impostato (esportato) in .bashrc per qualsiasi utente tu voglia eseguire tomcat? [per favore, scusate la grammatica orribile] Che sopravviverebbe agli aggiornamenti del pacchetto Tomcat, ecc. Suppongo che la funzione "run-as" in init avvierà la shell normale per quell'utente e riprenderà l'assegnazione. Vedi anche howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu
David J. Liszewski
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.