PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Out-of-memory-Abstürze: wie finde ich die Ursache(n) ?



AndreasMeier
09.02.11, 13:22
Hallo zusammen,

ich hab meinem Homeserver ein Update von Debian Lenny auf Squeeze verpasst.
Lief auch relativ problemlos durch, aber nun hab ich gelegentlich Abstürze mit einer "Out of memory"-Meldung.

Sieht dann so aus, dass keinerlei Dienst mehr ansprechbar ist und am Bildschirm kommen dann Meldungen so nach dem Motto:


Out of memory
Killing process 12345 [apache2]

wobei der Dienst ganz unterschiedlich sein kann.

Auf Eingaben direkt über die Tastatur wird nicht reagiert, sodass dann nur Ausschalten hilft.

Aber wie kann ich rausfinden, wo der ganze Speicher verschwindet ?

Danke und Gruß
Andreas

muell200
09.02.11, 13:26
Aber wie kann ich rausfinden, wo der ganze Speicher verschwindet ?


cronjob - ein script das den aktuellen speicher verbrauch mitschreibt.

bla!zilla
09.02.11, 14:12
Was betreibst du auf dem Apache2?

AndreasMeier
09.02.11, 14:28
Diverse PHP-Sachen, u.a. auch Squirrel,
aber nix, was Speicher frisst.

Wie gesagt, der Dienst kann ich der Meldung abweichen, hatte auch schonmal den MySQL-Dienst oder fail2ban gesehen.

muell200
09.02.11, 14:32
Diverse PHP-Sachen, u.a. auch Squirrel,
aber nix, was Speicher frisst.


linux schiesst einen dienst nach dem zufall prinzip ab, wenn der ram ausgeht...

dann muss es was anderes sein!

DrunkenFreak
09.02.11, 14:47
Nein tut es nicht. Siehe hier (http://linuxdevcenter.com/pub/a/linux/2006/11/30/linux-out-of-memory.html). Es kann passieren, dass der gefundene Dienst nicht der Verursacher war. Würde daher mal bei Apache und MySQL rumsuchen.

gropiuskalle
10.02.11, 19:51
Fehlt bei Dir eventuell eine swap-Partition?

L00NIX
13.02.11, 10:24
cronjob - ein script das den aktuellen speicher verbrauch mitschreibt.

Und den Speicherverbrauch kann man z.b. mit top im Batchmodus ermitteln. so einstellen, dass nach Speicherverbauch soritert wird und das ganze jede Minute in eine Datei umleiten (anhängen).

AndreasMeier
22.02.11, 15:38
Fehlt bei Dir eventuell eine swap-Partition?

swapon -s bringt


Filename Type Size Used Prio
/dev/hdc2 partition 979924 206736 -1

hdc2 ist zwar nicht in der fstab drin, was mich ein bisschen wundert.


Was mich ebenfalls noch wundert:
Manchmal ist der MySQL einfach wieder beendet.
Dann starte ich ihn manuell wieder.
Aber nach einer gewissen Zeit (> Tage) ist er wieder beendet.

muell200
22.02.11, 15:55
Was mich ebenfalls noch wundert:
Manchmal ist der MySQL einfach wieder beendet.
Dann starte ich ihn manuell wieder.
Aber nach einer gewissen Zeit (> Tage) ist er wieder beendet.

das problem ist doch bekannt - deinem system geht der speicher aus!!!

du musst "nur" noch nach dem uebertaeter suchen...

AndreasMeier
22.02.11, 17:14
Ich werd mal versuchen mit TOP die Daten mitschreiben zu lassen, wie von L00NIX vorgeschlagen.

mamue
22.02.11, 18:22
Die Werte zum Speicherverbrauch sind manchmal verwirrend, interessant kann aber auch die Sortierung nach Größe des data-Segments sein, dazu mal in top 'F' und 'S' drücken.

HTH
mamue

AndreasMeier
25.02.11, 08:51
Mir ist gestern was aufgefallen:

Ich hab gestern mal nach den Systemresourcen geschaut und festgestellt, dass unter User eine CPU-Last von 80% zu verzeichnen war.
Nachdem ich mit TOP mal nachgeschaut hatte, war der AIDE-Prozess ganz oben.
AIDE (Advanced Intrusion Detection Enviroment) war zwar installiert, aber nicht konfiguriert.
Trotzdem hat der Cronjob seinen Dienst verrichtet und ein AIDE-Update gestartet.

Ich weiß nicht, wie lange so ein Update dauert und wieviel Speicher der Prozess verbraucht, CPU-Last ist ja nicht gleich Speicher.

Kann das für meine Abstürze verantwortlich sein ?

DrunkenFreak
25.02.11, 18:19
Unwahrscheinlich. CPU-Last bedeutet nicht, wie du schon festgestellt hast, dass auch Speicher verbraucht wird.

In #6 steht drin, wie der Prozess vom Kernel erkannt wird, welcher abgeschossen wird. Das wird auch mitgeloggt. Also die entsprechenden Logs ansehen und dann von dem Dienst die Logs durchsehen.