it-swarm.com.de

Wo soll Java Heap-Optionen (z. B. -Xmx) für Tomcat 6 unter Ubuntu 9.04 festgelegt werden?

Ich verwende Tomcat mit dem Tomcat6-Paket von Ubuntu 9.04, das aus Tomcat mit jsvc einen Daemon macht. Ich möchte wissen, wie man Java Heap-Optionen wie -Xmx Für Tomcat richtig einstellt. Ich möchte die Konfiguration dort platzieren, wo sie stilistisch am korrektesten ist und wo immer sie ist am wenigsten wahrscheinlich durch Ubuntu-Paket-Updates überschrieben.

Die Optionen, die ich gerade sehe:

  • Codieren Sie sie irgendwo in /etc/init.d/Tomcat6.
  • Codieren Sie sie irgendwo in /usr/share/Tomcat6/bin/catalina.sh.
  • Erstellen Sie eine Zeile in /usr/share/Tomcat6/bin/startup.sh, Um CATALINA_OPTS auf die gewünschten Flags zu setzen, und exportieren Sie dann CATALINA_OPTS als Umgebungsvariable. (Es sieht so aus, als würde es von catalina.sh Abgeholt.)

Die letzte Option klingt wie die beste und wird (ohne Erklärung des Grundes) unter Erhöhen des Java-Heapspace im Tomcat-Startskript empfohlen. Aber ich wollte eine zweite Meinung einholen. Möchte jemand bestätigen, dass es keinen besseren Weg gibt?

36
Chris

Zumindest unter Ubuntu 10.04 gibt /etc/init.d/Tomcat6 die Quellen/etc/default/Tomcat6 an, falls vorhanden. Hier setze ich meine Overrides ein und ich glaube, dass dies im Allgemeinen der "genehmigte" Weg ist, solche Änderungen vorzunehmen.

37
natacado

Wenn Sie im bin-Verzeichnis Ihrer Installation nachsehen, werden die Skripte Catalina.sh oder .bat angezeigt. Wenn Sie sich diese ansehen, werden Sie feststellen, dass sie ein Skript setenv.sh bzw. setenv.bat ausführen, falls vorhanden, um Umgebungsvariablen festzulegen. Die relevanten Umgebungsvariablen sind in den Kommentaren oben auf Catalina.sh/bat beschrieben. Um sie zu verwenden, erstellen Sie beispielsweise eine Datei $ CATALINA_HOME/bin/setenv.sh mit Inhalten

export Java_OPTS="-server -Xmx512m"

Für Windows benötigen Sie in setenv.bat so etwas wie

set Java_OPTS=-server -Xmx768m

Dies gilt für Tomcat 5.5 bis 7. Original-Antwort https://stackoverflow.com/questions/286007/how-to-tune-Tomcat-5-5-jvm-memory-settings-without-using-the -configuration-progra

16
viper33m

Suchen Sie nach / etc/Tomcat6/Tomcat6.conf, das Java_OPTS bereit hält und darauf wartet, dass Sie es kommentieren (aber nur, wenn Sie es überhaupt haben, verwende ich Centos, nicht 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

Der eleganteste Weg, den ich bisher gefunden habe, besteht darin, /etc/init.d/Tomcat6 zu bearbeiten und dies oben in der Datei hinzuzufügen:

# local config settings
Java_OPTS="-Xms5000m -Xmx13000m

Die anderen Optionen, die ich in meiner Frage skizziert habe, scheinen nicht zu funktionieren. Nachdem ich das Skript studiert und einige weitere Experimente durchgeführt habe, bezweifle ich nun, dass /usr/share/Tomcat6/bin/catalina.sh und /usr/share/Tomcat6/bin/startup.sh beim Tomcat-Start mit dem Tomcat6-Ubuntu-Paket eine Rolle spielen. Stattdessen; /etc/init.d/Tomcat6 ersetzt vollständig alle Arbeiten, die normalerweise von Catalina.sh/startup.sh ausgeführt werden.

Ich bin immer noch ein wenig besorgt darüber, diese Konfigurationsoptionen in einem zukünftigen Paket-Update zu verlieren, aber ich denke, wenn das passiert, wäre es ziemlich einfach, sie wiederherzustellen.

2
Chris