Speicherprobleme

05/06/2008 - 15:58 von Christian Schröder | Report spam
Hallo!
Ich habe diese Nachricht gestern auch schon in alt.linux.suse gepostet,
aber da ich denke, dass es kein SuSE-spezifisches Problem ist, frage ich
hier noch mal (zumal sich inzwischen die Situation verschàrft hat).
Und zwar bekomme ich auf einem Server mit openSUSE 10.2 "Out of
memory"-Fehler, obwohl eigentlich noch massig Speicher frei sein müsste.
Das Problem tritt u.a. auf, wenn ich versuche, eine Java Virtual Machine
zu starten, aber auch bei anderen Applikationen. So sieht das dann aus:

$ /usr/java/jdk1.5.0_15_64bit/bin/java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

$ /usr/java/jdk1.5.0_12/bin/java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

Laut "free" ist aber noch genug Seicher frei, und Limits kann ich auch
nicht erkennen:

$ free -m
total used free shared buffers cached
Mem: 7987 6197 1790 0 0 4291
-/+ buffers/cache: 1905 6082
Swap: 2055 0 2055

$ ulimit -m -v
max memory size (kbytes, -m) 6952745
virtual memory (kbytes, -v) 8227280

Java versucht anscheinent, mittels "mmap2" Speicher zu bekommen:

$ strace /usr/java/jdk1.5.0_12/bin/java -version
[...]
mmap2(NULL, 1140850688, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0xfff1f1ec) = -1 ENOMEM
(Cannot allocate memory)
[...]

Nun sind 1140850688 Bytes ja eine Menge, ich bekomme aber die gleiche
Fehlermeldung, wenn ich Java sage, dass es weniger Speicher allozieren soll:

$ strace /usr/java/jdk1.5.0_12/bin/java -Xmx128m -version
[...]
mmap2(NULL, 201326592, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0xffe6411c) = -1 ENOMEM
(Cannot allocate memory)
[...]

Die Probleme treten seit einiger Zeit aus, wobei ich nichts willentlich
am Server geàndert habe. Hat jemand einen Tip für mich, was da los ist?

Die Maschine hat zwei Dual-Xeon-Prozessoren. Der Kernel ist ein
64bit-Kernel:


uname -a


Linux db1 2.6.18.8-0.9-default #1 SMP Sun Feb 10 22:48:05 UTC 2008
x86_64 x86_64 x86_64 GNU/Linux

Ich bin für jede Hilfe dankbar!

Gruß,
Christian

P.S.: Memory overcommit ist bewusst deaktiviert, allerdings schon seit
langem. Bislang hat das nichts geschadet.
 

Lesen sie die antworten

#1 Christian Garbs
05/06/2008 - 19:49 | Warnen spam
Mahlzeit!

Christian Schröder wrote:

$ ulimit -m -v
max memory size (kbytes, -m) 6952745
virtual memory (kbytes, -v) 8227280



Was sagen die anderen Limits?

Ohne jetzt tiefer deren Sinn und Zweck zu eruieren, klingen zumindest
folgende noch nach Speicher:

:~$ ulimit -a
[...]
data seg size (kbytes, -d) unlimited
[...]
max locked memory (kbytes, -l) 32
[...]
stack size (kbytes, -s) 8192
[...]

Gruß,
Christian,
der gegen den mitunter amoklaufenden Netscape 4 mal ein ulimit gesetzt
und vergessen hat und sich dann drei Jahre spàter lange Zeit wunderte,
warum Java nicht starten wollte...
Christian.Garbs.http://www.cgarbs.de
<<And now, our special guest star, THE CHORD FROM HELL>>
(The Long Road - Book Two of Undocumented Features)

Ähnliche fragen