Tomcat Speicherverwaltung

Dieses Thema im Forum "Anwendungen" wurde erstellt von gnoovy, 16.11.2014.

  1. gnoovy

    gnoovy Eroberer

    Dabei seit:
    20.02.2004
    Beiträge:
    73
    Zustimmungen:
    0
    Hi Zusammen,

    ich habe mir von Apache die Tomcat binaries geladen und mittels selbergebautem StartScript laufen lassen. Ansich funktioniert alles, allerdings möchte ich die Speicherverwaltung von Tomcat noch anpassen. Unter Windows gibt es ja im Tomcat-GUI das Initial und Max Memory Pool. Unter Linux habe ich über Google in Erfahrung gebracht, dass es hierfür in der catalina.sh die Zeile:

    CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m $JPDA_OPTS"

    anpassen soll. Weiter hab ich noch gelesen, dass man aber auch eine setenv.sh mit:

    export JAVA_OPTS="-Xms256m -Xmx2048m -XX:MaxPermSize=512m"

    erstellen soll. Aber was stimmt denn nun? Ich möchte den Speicher analog wie unter Windows konfigurieren. Also den Xms, Xmx und MaxPermSize.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bitmuncher, 16.11.2014
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Beide Möglichkeiten funktionieren. Allerdings ist es unüblich die catalina.sh zu bearbeiten, wenn man die Umgebung definieren will, denn genau dafür ist die setenv.sh gedacht. Wenn du mal einen Blick in die catalina.sh wirfst, findest du darin Abschnitte wie den folgenden:

    Code:
    if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
      . "$CATALINA_BASE/bin/setenv.sh"
    
    D.h. also, dass die setenv.sh "ausgeführt"/geladen wird, wenn sie für den User, der Tomcat startet, ausführbar ist.

    Fazit: Der saubere Weg führt über die setenv.sh. Es sind aber beide Wege möglich. Auf jeden Fall musst du es nicht doppelt machen indem du es in beide Dateien einträgst, da ja die setenv.sh sowieso beim Ausführen der catalina.sh ausgeführt wird.
     
  4. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    beides geht - TomCat läuft ja mit Java und Java startet normalerweise mit den entsprechenden Umgebungsvariablen.

    Sinnvoller ist es allerdings, daß im ded. Start-Script vom Tomcat zu setzen und dort die Umgebungsvariablen von Java zu ignorieren, da man so eine ded. Kontroller bekommt, vor allem, wenn man mal mehr als einen TomCat auf dem System laufen hat...
     
  5. #4 bitmuncher, 16.11.2014
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Das würde aber den Sinn der setenv.sh ad absurdum führen. Diese Datei soll schliesslich die Laufzeit-Umgebung des Tomcat definieren. Dort kann man z.B. auch seinen $PATH einschränken usw.. Und es hat auch seine Gründe warum diverse Parameter von der catalina.sh aus Umgebungsvariablen geladen werden und nicht fest im Skript verankert sind. Wäre ein Bearbeiten des Startskripts vorgesehen, wäre das nicht notwendig.

    Tatsache ist auch, dass es bei einem professionellen Deployment (mit Tools wie Chef, Puppet, cfengine, Rex o.ä.) wesentlich einfacher ist eine Datei (die setenv.sh) auszulassen als zu prüfen ob sich die neue catalina.sh geändert hat und diese dann mit einer bestehenden Version zu mergen.
     
  6. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    ich meinte auch nicht die catalina.sh sondern würde dafür eher entweder ein init-Script erstellen oder ein ded. Script, welches den TomCat startet / stopt.

    So machen wir das seit Jahren und mit eigentlich nur guten Erfahrungen - man muss sich keine Gedanken bei Updates machen, da die Original-Dateien vom TomCat nicht verändert werden, kann problemlos mehrere Nutzerkonten verwenden, jeder Java-App ihre eigene Konfiguration für Java (und ggf. sogar ded. Java-Versionen) zuweisen und hat parallel auch keine Problem mit den allg. envs auf dem System.

    So liefen bei uns mit 15 unterschiedlichen Nutzern 3 verschiedene TomCat-Versionen (mit jeweils zugeordneter Java-Version) in bis zu 10 Instanzen mit jeweils eigener Speicher-Konfiguration, je nach dem wie die jeweilige Applikation das brauchte.
     
  7. #6 bitmuncher, 16.11.2014
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Wenn ihr ernsthaft mit so vielen verschiedenen Envs innerhalb eines Systems rumhantieren müsst, solltet ihr euch ggf. mal Container-Virtualisierung wie Docker oder OpenVZ anschauen. Da bekommt man solche Konflikte gar nicht erst und kann auf zig Init-Skripte für quasi den gleichen Service problemlos verzichten.
     
  8. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    Docker gab's damals noch nicht und Virtualisierung für ded. Anwendungen war / ist der Overhead (im weitesten Sinne) zu groß.

    Konflikte haben auch keine - bzw. wir umgehen sie eben. Die TomCats laufen jeweils unter einem eigenen User, der hat sein env und das entsprechende Start-Script. Deploy ist im schlimmsten Fall (selbst wenn mal ein kompletter TomCat mit erstellt werden muss) nicht viel mehr als ein tar.gz entpacken :-)

    Ist zugegeben in dem Konstrukt auch ein wenig historisch gewachsen, heute könnte man da vieles anders machen, nachteilig oder schlecht empfinde ich den Weg aber immer noch nicht... Vor allem, wenn man mal mehrere Instanzen der gleichen Anwendung braucht, aber deswegen nicht gleich eine neue VM, Server oder sonst was aufbauen will...
     
  9. gnoovy

    gnoovy Eroberer

    Dabei seit:
    20.02.2004
    Beiträge:
    73
    Zustimmungen:
    0
    Hi Zuammen,

    vielen Dank für eure Hilfe. Mich verwundert es nur, dass in den tomcat binaries download der 7er Version in der catalina.sh die catalina_opts bereits mit der Konfiguration meines Eingangsposts bereits befüllt ist. Werden die Werte somit überhaupt verwendet?

    Ausschnitt catalina.sh

     
  10. #9 bitmuncher, 16.11.2014
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Wie du ja sehen kannst, werden die Parameter lediglich als zusätzlicher Wert an CATALINA_OPTS angehängt.

    Code:
    CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx2048m -XXermSize=512m -XX:MaxPermSize=512m $JPDA_OPTS"
    
    D.h. also wenn die CATALINA_OPTS irgendwo anders schon gesetzt wird, werden die Werte, die in der catalina.sh eingetragen sind, an diese angefügt.
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. gnoovy

    gnoovy Eroberer

    Dabei seit:
    20.02.2004
    Beiträge:
    73
    Zustimmungen:
    0
    Hi bitmuncher,

    hmm... ok aber ich habe so im Grundsatz nichts definiert. Wird denn im Standard von Tomcat die CATALINA_OPTS bereits irgendwo gesetzt? Oder sind dann diese Speicherangaben somit noch inaktiv?
     
  13. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    wenn Du nichts gesetzt hast bleiben die Default-Einstellungen von der catalina.sh aktiv.

    Sollte sich aber auch im Logfile ablesen lassen - da wird AFAIK das ganze Gedöhns beim Start geloggt.
     
Thema: Tomcat Speicherverwaltung
Besucher kamen mit folgenden Suchen
  1. tomcat verschiedene versionen windows catalina_Home

    ,
  2. tomcat speicher prüfen

    ,
  3. tomcat8 werte für „Initial memory pool“

    ,
  4. unix speicherverwaltung,
  5. tomcat speicherverwaktung,
  6. tomcat catalina Xmx2048m
Die Seite wird geladen...

Tomcat Speicherverwaltung - Ähnliche Themen

  1. tomcat performance monitor

    tomcat performance monitor: Hi zusammen, ich habe mehrere Tomcat Server laufen, die einen Webservice bereitstellen. Nun bin ich auf der Suche nach einem Performance Monitor...
  2. Mehrere Tomcat instanzen

    Mehrere Tomcat instanzen: Hallo zusammen, wie würdet ihr follgende Aufgabe lösen? - Zwei Webanwendung die auf Apache Tomcat beruht - Für jeden Kunden eine eigene Instanz...
  3. Postgresql Datenbankzugriff von TomCat auf IPv6 umstellen

    Postgresql Datenbankzugriff von TomCat auf IPv6 umstellen: Hallo Leute, ich brauche mal dringen ein paar Tips von euch. Bin leider nicht so tief in der Linux/Unix - Materie vertieft. Hier mein Problem:...
  4. Netbeans und Tomcat

    Netbeans und Tomcat: Hallo Leute, ich habe unter Ubuntu 10.04 netbeans und tomcat installiert und will tomcat nun mit netbeans integrieren... Problem ist nun, dass...
  5. Vhost Subdomain verweist auf eine Tomcatseite

    Vhost Subdomain verweist auf eine Tomcatseite: Hallo erstmal, Wenn ich eine Seite mit Servlet öffnen möchte, muss ich zur domain.de:8080/Ordner/meineSeite.html angeben. Ist es möglich, dass...