Tomcat-Cluster und Arbeitsspeicher

Questioner

Mitglied
Hi Leute,

ich habe ein Linux-System mit 4 Tomcats.
Jetzt würde ich gerne festlegen, wie viel Arbeitsspeicher die verwenden dürfen.
Das Ganze erfolt über die Globale CATALINA_OPTS:
CATALINA_OPTS="-Xms512m -Xmx1024m"

Was ich aber nicht verstehe: Gelten die Werte für jede Tomcat-Instanz oder für alle zusammen?

z.B. bei :
Hat jeder Tomcat jetzt maximal 1 GB zur Verfügung oder müssen sich die Tomcats das GB teilen und jeder nimmt sich sein Teil den er braucht?

Wenn die Angabe für jeden Tomcat seperat gilt, gibt es dann eine Möglichkeit, dass 2 Tomcats 1GB und 2 Tomcats 2GB Arbeitsspeicher zugeteilt bekommen können?

Liebe Grüße
Questioner
 
Globale CATALINA_OPTS

Was meinst du denn damit?

Du kannst einem Tomcat über die Datei $CATALINA_HOME/bin/setEnv.bat (oder setEnv.sh) Parameter setzen, die mitteilen, wieviel Speicher die JVM bekommt.

Im Skript catalina.bat siehst du, dass die Datei beim Start gelesen wird (sofern vorhanden), also kannst du CATALINA_OPTS spezifisch für einen Tomcat setzen.

Damit ist klar, das jeder Tomcat eine andere Einstellung bekommen kann und somit ist es einfach 2 Tomcats 1GB und andere 2 Tomcats 2GB Speicher zugeteilt bekommen.

PS: Mit einem Cluster verbinden viele, unter anderem ich auch, eine gewisse Ausfallsicherheit. Wenn aber der Cluster auf einer einzigen Maschine läuft, ist ja damit nicht weit her, denn wenn der kaputt geht nimmt er gleich 4 Tomcat mit in den Orkus.
 
Zuletzt bearbeitet:
Hallo, vielen Dank für die Antwort!

Naja, bei Linux stellt die CATALINA_OPTS eine systemweite und somit globale Variable dar, die von überall geschrieben und gelesen werden kann - soweit ich das verstanden habe.

Wenn ich das jetzt richtig interpretiere heißt das, dass der Tomcat beim Starten die CATALINA_OPTS ausliest und mit diesen Werten startet. Eine nachträgliche Änderung der CATALINA_OPTS wirkt sich nicht auf bereits gestartete Tomcats aus. Ist das so richtig?

Ich habe derzeit ein kleines, einfaches Start-Skript:

#Set CATALINA_OPTS
export CATALINA_OPTS="-Xms512m -Xmx1024m"

#Start Tomcat1
cd ./tomcat1/bin
./startup.sh

#Start Tomcat2
cd ../../tomcat2/bin
./startup.sh

...

Demnach starten alle Tomcats gleich.

Würde ich die CATALINA_OPTS nach dem Start von Tomcat1 aber neu definieren, würden die anschließend startenden Tomcats mit den neuen Werten starten, der Tomcat1 aber mit den "alten"...

#Set CATALINA_OPTS for Tomcat1
export CATALINA_OPTS="-Xms512m -Xmx1024m"

#Start Tomcat1
cd ./tomcat1/bin
./startup.sh

#Set CATALINA_OPTS for all other Tomcats
export CATALINA_OPTS="-Xms1024m -Xmx2048m"

#Start Tomcat2
cd ../../tomcat2/bin
./startup.sh

...


Ich hoffe ich habe das jetzt richtig verstanden! Das wäre nämlich genau die Lösung die ich gesucht habe. Kann man irgendwie überprüfen, ob die Tomcats die Werte auch angenommen haben?


Viele liebe Grüße
Questioner
 
Naja, bei Linux stellt die CATALINA_OPTS eine systemweite und somit globale Variable dar, die von überall geschrieben und gelesen werden kann - soweit ich das verstanden habe.

Das stimmt sooo nicht ganz und unter Windows übrigens ebenfalls;-)

Wenn du in einer Shell eine Variable setzt, z.B. CATALINA_OPTS, wird diese an alle Prozesse, die du danach in derselben Shell startest, vererbt und diese arbeiten mit dem Wert.

Also sind bereits gestartete Tomcat davon überhaupt nicht betroffen. Daher kannst Du in setEnv.sh CATALINA_OPTS ändern und ein neu gestarteter Tomcat wird die geänderten Werte benutzen.

Ich habe mein catalina.sh geändert, damit der aktuelle Wert beim Start ausgegeben wird. Füge dazu einfach die Zeile hinzu, wo die anderen Ausgaben CATALINA_BASE,HOME,etc. gemacht werden
Code:
echo "Using CATALINA_OPTS:   $CATALINA_OPTS"
Das der Tomcat mit anderen JVM-Werten läuft, kannst Du über die Manager-Applikation verifizieren.
Code:
http://localhost:8080/manager/status
 
Ok... Aber das heißt ja, dass es so, wie ich es in meinem vorherigen Beitrag geschrieben habe funkitoneieren sollte, oder?

Der erste Tomcat bekommt -Xms512m -Xmx1024m, der zweite -Xms1024m -Xmx2048m.

Ich kann es leider erst am Montag in der Praxis überprüfen...
 

Neue Themen


Zurück
Oben