Speicher-Probleme mit Tomcat auf vServer von Strato

bauhaus28

New Member
Hallo allerseits,
ich habe ein Problem mit Tomcat auf einem vserver von Strato (Tomcat5.5.20, Java 1.5.0_07b03, SuSe 9.3, Plesk reloaded).
Die Installation hat soweit funktioniert, allerdings erzeugt Tomcat beim Starten ca. 15 Prozesse. Das führt dazu, dass ein stoppen mit "catalina.sh shutdown" nicht mehr möglich ist. Der Prozess bricht mit folgender Fehlermeldung ab:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
(diese Fehlermeldung ist mir schon in anderen Beiträgen aufgefallen, eine richtige Lösung wurde aber nie angeboten).
Auf einer "identischen" Installation auf einem lokalen Rechner, tritt dieses Phänomen nicht auf.

Gibt es für dieses Problem eine Lösung? Was ist die Ursache für die grosse Anzahl an tomcat-Prozessen (die Zahl scheint nur durch den vorhanden Speicher begrenzt zu sein... :confused: )

Danke,
bauhaus28
 
Um den Tomcat zu stoppen wird erneut eine Java VM gestartet; und dafür reicht dein Speicher nicht mehr.
Es bleibt dir also nicht anderes übrig, als Tomcat mit kill zu entfernen.

Oder das System so zu konfigurieren, daß genügend Speicher vorhanden ist.
Als erstes würde ich Plesk rausschmeißen :-)

Übrigens sind das keine 15 Prozesse sondern Threads.


Gruß, Peter
 
Hallo Peter,

vielen Dank für die schnelle Antwort. Den Tomcat wieder abzuschiessen, das ist kein Problem, aber das kann ja nicht die endgültige Lösung sein. Mir ist nicht ganz klar wieso Tomcat soviele threads öffnet (und so den ganzen Speicher verbrät, so daß keine neue VM gestartet werden kann). Diese threads werden sofort nach dem Start geöffnet, der Server ist also nicht unter Last...
Auf meinem Testsystem verhält sich Tomcat so wie ich es erwarten würde (beim Start nur ein Prozess/Thread).

Meine bisherigen Versuche dem Problem auf den Grund zu gehen waren:
1. Plesk abschalten
2. Apache httpd server abschalten
3. Alle möglichen Varianten der Java Speicherkonfiguration (also -Xmx und -Xms)
4. Tomcat minimal-Konfiguration

Hat leider alles nix gebracht... Wahrscheinlich werde ich jetzt das System neu aufsetzen (diesmal ohne Plesk - bisher war ich nur zu faul alles neu aufzusetzen ;-) )

Den einzigen Unterschied, den ich zwischen vServer und lokalem Testsystem erkennen kann ist bei der Überprüfung der Java Version. Auf dem lokalen System taucht der Begriff sharing auf, der auf dem vServer fehlt, also:

Java Hotspot Client VM (build 1..5.0_07, mixed mode, sharing)

Weitere Ideen und Anregungen sind natürlich sehr wilkommen.
 
Auf einer "identischen" Installation auf einem lokalen Rechner, tritt dieses Phänomen nicht auf.
Identische Installation auf verschiedenen Server-Typen... :)

Du schweigst Dich darüber aus, welchen vServer von Strato Du hast, aber offensichtlich einen mit zuwenig zugesichertem Speicher.
Schau Dir einfach mal Deine user_beancounters an.

huschi.
 
Mir ist nicht ganz klar wieso Tomcat soviele threads öffnet (und so den ganzen Speicher verbrät, so daß keine neue VM gestartet werden kann). Diese threads werden sofort nach dem Start geöffnet, der Server ist also nicht unter Last...
Ich glaube nicht, daß du verstanden hast was ein Thread ist und wozu er gut ist!
Meine bisherigen Versuche dem Problem auf den Grund zu gehen waren:
1. Plesk abschalten
2. Apache httpd server abschalten
3. Alle möglichen Varianten der Java Speicherkonfiguration (also -Xmx und -Xms)
4. Tomcat minimal-Konfiguration
Apache abschalten ist nun wirklich der falsche Weg! Vielleicht solltest du den Apache etwas "schlanker" konfigurieren.
So sieht das auf dem kleinen Starto-Server A aus; und hier läuft neben MySql zusätzlich noch Postgres!
Code:
VPS Speichernutzung:
Momentan genutzt:       412.082 MB
Zugesichert:            259.375 MB
Maximal nutzbar:        791.281 MB
Davon belegt Tomcat ca 140MB

Gruß, Peter
 
Hallo allerseits,

inzwischen bin ich zu der Einsicht gelangt, daß ich es wohl vergessen kann, Tomcat auf dem Strato Powerserver A laufen zu lassen. Ich hab einfach den Speicherverbrauch des Tomcat unterschätzt...

@huschi: natürlich ist mir klar, daß der Testserver und der Stratoserver nicht identisch sind, deswegen die Anführungszeichen ;-) Ich habe nur soweit möglich versucht die gleichen Versionen der verwendeten Software (inklusive OS) zu installieren (es ist ganz praktisch, wenn man ein Spielsystem hat bevor man online geht). Wie gesagt habe ich den V-Powerserver A mit 128m zugesichertem Speicher.

@Peter: i.A. weiss ich schon was ein Thread ist, und ich weiss auch dass Tomcat multi-threaded ist. Was mich auf dem vServer iritiert hat, ist die Tatsache, dass die threads in der Prozessliste auftauchen wo ich sie nicht erwartet habe: also
ps aux | grep tomcat​
ergibt eine Liste mit mehr als 25 Einträgen (ich poste die genaue Ausgabe später). Bisher ist mir sowas noch auf keinem Linux System passiert (ich hab Tomcats unter SuSe und Fedora am laufen - halt nur auf lokalen Rechnern, auf denen man sich um Speicherverbrauch keine Sorgen machen muss ;-) ) . Ich vermute es liegt an der Virtualisierungssoftware die dafür sorgt, dass die Threads in der Prozessliste auftauchen. Um diesen Verdacht zu erhärten, hab ich ein kleines Java Programm geschrieben, das nichts anderes macht, als 25 Threads zu starten die in bestimmten Zeitintervallen eine kurze Nachricht ausgeben und endlos laufen - und was passiert: schaut man sich die Prozesse mit ps an bekommt man auf dem Vergleichsrechner einen Eintrag und auf dem vServer entsprechend 26.
Ich weiss nicht ob dieses Verhalten auf vServern mit Virtuozzo normal ist, eine "quick and dirty" Google Anfrage hat nichts zutage gefördert. Interessant wäre es schon ob auch andere vServer sich so verhalten.

Apache hab ich natürlich nur vorrübergehend abgeschaltet um möglichst viel SPeicher freizuschalten, das war natürlich nicht für die Ewigkeit gedacht

Gruß,
bauhaus28
 
Hi,

das mit den Threads anzeigen kann auch eine Einstellungssache von ps sein, ps axfm zeigt zum Beispiel alle Threads anstatt Childs an.
 
Nachfolgend die Ausgabe von top und ps (auf dem vServer):

Code:
top - 20:55:10 up 1 day, 20:33,  1 user,  load average: 0.08, 0.02, 0.01
Tasks:  69 total,   1 running,  68 sleeping,   0 stopped,   0 zombie
Cpu(s):   0.3% user,   1.0% system,   0.0% nice,  98.7% idle
Mem:   1548884k total,  1491016k used,    57868k free,   346724k buffers
Swap:  3068392k total,   242744k used,  2825648k free,   759068k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28992 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:02.62 java
28994 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
28995 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.50 java
28996 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
28997 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
28998 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
28999 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.63 java
29000 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29001 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29003 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29004 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29005 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.11 java
29006 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29007 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29008 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29009 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java
29010 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.01 java
29011 tomcat     9   0 30752  30m  10m S  0.0  2.0   0:00.00 java

Und hier mit ps:
Code:
# ps aux | grep tomcat
tomcat   28992  1.3  1.9 298612 30756 pts/0    S    20:52   0:02 /usr/lib/jvm/java/jre/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/share/tomcat5/conf/logging.properties -Djava.endorsed.dirs=/usr/share/tomcat5/common/endorsed -classpath :/usr/share/tomcat5/bin/bootstrap.jar:/usr/share/tomcat5/bin/commons-logging-api.jar -Dcatalina.base=/usr/share/tomcat5 -Dcatalina.home=/usr/share/tomcat5 -Djava.io.tmpdir=/usr/share/tomcat5/temp org.apache.catalina.startup.Bootstrap start
tomcat   28994  0.0  1.9 298612 30756 pts/0    S    20:52   0:00 /usr/lib/jvm/java/jre/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/share/tomcat5/conf/logging.properties -Djava.endorsed.dirs=/usr/share/tomcat5/common/endorsed -classpath :/usr/share/tomcat5/bin/bootstrap.jar:/usr/share/tomcat5/bin/commons-logging-api.jar -Dcatalina.base=/usr/share/tomcat5 -Dcatalina.home=/usr/share/tomcat5 -Djava.io.tmpdir=/usr/share/tomcat5/temp org.apache.catalina.startup.Bootstrap start
--------snip ---- es folgen noch ca. 20 weitere Einträge
Und um Missverständnisse auszuschliessen: ich habe tomcat ganz sicher nur einmal gestartet :)
Hat jemand Erfahrungen mit tomcat auf einem vServer, ist dieses Verhalten normal?

Nachfolgend noch die bean_counters:
Code:
       uid  resource           held    maxheld    barrier      limit    failcnt
    xxxxx: kmemsize        2628002    2631538    8512433    9823665          0
            lockedpages           0          0       3800       4096          0
            privvmpages       46878      46970     138256     202568      16575
            shmpages           8864       8864     131072     131072          0
            dummy                 0          0          0          0          0
            numproc              51         51        232        232          0
            physpages         17272      17337          0 2147483647          0
            vmguarpages           0          0      66400 2147483647          0
            oomguarpages      17967      18032      66400 2147483647          0
            numtcpsock           19         20        500        500          0
            numflock              8          8        200        232          0
            numpty                1          1         64         64          0
            numsiginfo            0          1        512        512          0
            tcpsndbuf          8880      24420    4683256    6102456          0
            tcprcvbuf             0       2220    4683256    6102456          0
            othersockbuf      15540      40460    1503232    4063232          0
            dgramrcvbuf           0       2220     240000     262144          0
            numothersock         20         22        382        382          0
            dcachesize       258517     261128    2194304    2317184          0
            numfile             709        710       5432       5432          0
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            numiptent            54         54        128        128          0

Wofür steht eigentlich der Eintrag privvmpages?

UPDATE:
privvmpages = maximal nutzbarer RAM
vmguarpages = Speichergarantie
oomguarpages = Speichergarantie bei Speichermangel

Danke und Grüße,
bauhaus28
 
Last edited by a moderator:
So sieht das auf dem kleinen Starto-Server A aus; und hier läuft neben MySql zusätzlich noch Postgres!
Code:
VPS Speichernutzung:
Momentan genutzt:       412.082 MB
Zugesichert:            259.375 MB
Maximal nutzbar:        791.281 MB
Davon belegt Tomcat ca 140MB

Gruß, Peter

Die Angaben, die Du zur VPS Nutzung gemacht hast haben mich neugierig gemacht, weil beim Strato vServer A (dem Kleinen) laut webpage nur 128MB zugesichert sind. Ich habe vzfree mal bei mir auf dem vServer laufen lassen und habe folgendes Ergebnis:
Code:
 Ohne tomcat:
VPS Speichernutzung:
Momentan genutzt:       174.805 MB
Zugesichert:            259.375 MB
Maximal nutzbar:        791.281 MB

mit tomcat:
Momentan genutzt:       418.188 MB
Zugesichert:            259.375 MB
Maximal nutzbar:        791.281 MB

So wie's aussieht haben wir mehr Speicher zugesichert als Strato als garantiert ausweist, was ja mal nicht schlecht ist :D
Was mich wundert ist, wieso der tomcat bei Dir läuft (immerhin verbrauchst Du ja auch 412 MB) :confused:
Tauchen in Deiner Prozessliste auch ewig viele Tomcat Einträge auf???
 
Hier vom Strato PowerServer C:
Code:
VPS Speichernutzung:
Momentan genutzt:       186,395 MB
Zugesichert:            515,867 MB
Maximal nutzbar:        1012,98 MB
 
Back
Top