Frage Wo legen Sie Java-Heap-Optionen (z. B. -Xmx) für Tomcat 6 unter Ubuntu 9.04 fest?


Ich benutze Tomcat mit dem Tomcat6-Paket von Ubuntu 9.04, das aus Tomcat einen Daemon mit jsvc macht. Ich würde gerne wissen, wie man Java-Heap-Optionen richtig einstellen kann -Xmx für Tomcat. Ich würde gerne die Konfiguration dort platzieren, wo sie am besten stilistisch korrekt ist und wo am wenigsten mit Ubuntu-Paket-Updates überschrieben wird.

Die Optionen, die ich gerade sehe:

  • Codiere sie irgendwo in /etc/init.d/tomcat6.
  • Codiere sie irgendwo in /usr/share/tomcat6/bin/catalina.sh.
  • Erstellen Sie eine Linie in /usr/share/tomcat6/bin/startup.sh Setzen Sie CATALINA_OPTS auf die gewünschten Flags und exportieren Sie anschließend CATALINA_OPTS als Umgebungsvariable. (Das sieht so aus, als würde es von ihnen aufgenommen werden catalina.sh.)

Die letzte Option klingt wie die beste, und sie wird (ohne Erklärung dafür) befürwortet Den Heapspace von Java im Tomcat-Startskript erhöhen. Aber ich wollte eine zweite Meinung bekommen. Wer möchte bestätigen, dass es keinen besseren Weg gibt?


36
2018-05-07 01:32


Ursprung




Antworten:


Zumindest unter Ubuntu 10.04, /etc/init.d/tomcat6 sources / etc / default / tomcat6 falls vorhanden. Dort setze ich meine Überschreibungen ein, und ich glaube, es ist allgemein der "genehmigte" Weg, solche Änderungen vorzunehmen.


37
2017-07-08 14:51



/ etc / default / tomcat6 ist der richtige Ort - Amala
+1 Konfiguration sollte immer in gemacht werden /etc wenn möglich. - Marcus Downing
Auf CentOS war der Ort, den ich gefunden habe, /etc/tomcat6/tomcat6.conf - khylo
Auf CentOS 6.4, /etc/tomcat6/tomcat6.conf ist eine große Datei und ich wollte meine persönlichen Anpassungen nicht dort hinstellen, also habe ich erstellt $CATALINA_HOME/bin/setenv.shund beschaffte es /usr/sbin/tomcat6. Hoffentlich hilft das CentOS Benutzern (ja, ich weiß, dass die ursprüngliche Frage für Ubuntu war). - DuffJ
@ Khylo Yep, nahm mich ein wenig Zeit, um es herauszufinden. scheint in CentOS das /etc/init.d/tomcat6 / usr / sbin / tomcat6 anzurufen, das nicht catalina.sh aufruft, aber einfach die Tomcat Bootstrap Klasse direkt aufruft (im Gegensatz zu dem Ubuntu /etc/init.d/tomcat6 das ruft catalina.sh) - Eran Medan


Wenn Sie im Verzeichnis bin der Installation nachsehen, werden catalina.sh- oder .bat-Skripte angezeigt. Wenn Sie in diese sehen, werden Sie sehen, dass sie jeweils ein Script setenv.sh bzw. setenv.bat ausführen, um Umgebungsvariablen zu setzen. Die relevanten Umgebungsvariablen sind in den Kommentaren oben auf catalina.sh/bat beschrieben. Um sie zu verwenden, erstellen Sie zum Beispiel eine Datei $ CATALINA_HOME / bin / setenv.sh mit Inhalt

export JAVA_OPTS="-server -Xmx512m"

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

set JAVA_OPTS=-server -Xmx768m

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


16
2017-09-13 13:27



Funktioniert gut für Systeme ohne / etc / default / include, z. B. FreeBSD. - vadipp


Suchen /etc/tomcat6/tomcat6.conf die JAVA_OPTS bereithält und darauf wartet, dass du sie auskommentierst (aber nur wenn du sie überhaupt hast, benutze 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
2017-09-21 04:03



Dies scheint für CentOS / yum / RPM Version von Tomcat korrekt zu sein. Für das Ubuntu / apt-get-Paket ist die setenv.sh der richtige Weg, um AFAIK zu gehen - Eran Medan
Ja, KCD ist richtig, für CentOS funktioniert Tomcat6.conf gut. Überprüft mit dem Befehl ps aux | Grep Kater Es zeigt den Parameter mit den eingestellten Werten an. - Manikandan Arunachalam


Der eleganteste Weg, den ich bisher gefunden habe, ist, /etc/init.d/tomcat6 zu editieren und am Anfang der Datei hinzuzufügen:

# local config settings
JAVA_OPTS="-Xms5000m -Xmx13000m

Die anderen Optionen, die ich in meiner Frage beschrieben habe, scheinen nicht zu funktionieren. Nachdem ich das Skript studiert und noch etwas experimentiert habe, bezweifle ich jetzt, dass /usr/share/tomcat6/bin/catalina.sh und /usr/share/tomcat6/bin/startup.sh irgendeine Rolle beim Tomcat-Start mit dem tomcat6 Ubuntu-Paket spielen. Stattdessen; Das /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 über den Verlust dieser Konfigurationsoptionen in einem zukünftigen Paket-Update, aber ich denke, wenn das passiert, wäre es ziemlich einfach, sie wiederherzustellen.


2
2018-05-08 00:07



Kann dies in der .bashrc-Datei festgelegt (exportiert) werden, für welchen Benutzer Tomcat ausgeführt werden soll? [bitte Entschuldigung entsetzliche Grammatik] Das würde Updates für Tomcat-Paket usw. überleben. Ich nehme an, dass die "run-as" -Funktion in init die normale Shell für diesen Benutzer startet und die Zuweisung aufgreift. Siehe auch howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu - David J. Liszewski