RAM Speicher unter Open Suse 12.3 läuft voll

Hallo, wir haben folgendes Problem mit einem Open Suse 12.3 System: Nach dem Reboot ist der belegte Arbeitsspeicher bei ca. 2GB. Es laeuft u.a. eine mysql Datenbank auf dem Server. Je laenger der Server laeuft, desto mehr steigt der belegte Speicher. Zuerst hatte das System 4GB RAM, die waren nach ein paar Tagen erreicht, das System lief aber trotzdem weiter. Wir haben den Server jetzt auf 20GB aufgeruestet, jetzt ist er nach ca. 2 Wochen schon bei 17GB belegtem Arbeitsspeicher. Wenn ich “top” eingebe und nach “mem” sortiere, dann sehe ich eigentlich nur java und mysql als speicherbelegende Prozesse. Wir haben das ganze schonmal auf Hyper-V aufgesetzt, da war es noch schlimmer. Die zugewiesenen 8GB waren nach kurzer Zeit voll und das virtuelle System war nicht mehr pingbar. Nur ein Neustart hat das System wieder beleben koennen. Ich habe schonmal gelesen, dass der kdm buggy ist und den Speicher ansteigen laesst. Leider habe ich aber keine eindeutlige Loesung finden koennen. Kann ich irgendwo nachsehen, welche Prozesse genau fuer die aktuelle Speicherbelegung verantwortlich sind ? Ist das ein bekanntes Problem ? Wie man man das abstellen ? Danke fuer die Hilfe. Hier habe ich ein PDF mit dem Ergebnis des top Befehls (sortiert nach mem) zum Download:
www.itg.de/images/opensuse12_3_top_memsort.pdf

Linux versucht immer das ganze Memory zu nutzen. Ich habe z.B ein 8GB System
und 7,8GB in use. Dabei nehmen die laufenden Anwendungen nur ~ 1,5GB ein.
Der Rest ist hauptsächlich Cache meist rund um das Filesystem, da ja ein performantes
System so wenig wie möglich versucht auf die Platte zuzugreifen.

Es gibt ein nette Anwendung: KSysGuard. Hier kann man neue Tabs erstellen
und auch den Speicherverbrauch von Caches und Buffers über der Zeitachse
darstellen lassen.

To free pagecache:

  • echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

  • echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

  • echo 3 > /proc/sys/vm/drop_caches

Wenn Du also den KSysguard so aufsetzt, dass er Dir das
“Used Memory”, “Cached Memory” und “Buffered Memory”
darstellt und Du dann z.B.

echo 3 > /proc/sys/vm/drop_caches

ausführst, solltest Du sehen wie das Memory freigegeben wird
und auch sofort wieder wächst, wenn Du DB oder Filesystem
Zugriffe hast.

Aber nochmals, Linux verwaltet das selbst, heisst, dass es auch
die Caches wieder frei gibt, wenn das Memory an anderer Stelle
benötigt wird.

Solange also “top” nicht irgendeinen Prozess zeigt, der koninuierlich
wächst, was möglicherweise auf ein Memory Leak der Anwendung
schliessen liese, ist alles gut.

TF

Vielen Dank fuer die Information !

  • grenz de wrote, On 12/05/2013 01:36 PM:
    >
    > Vielen Dank fuer die Information !
    >
    >
    Wenn es eh ein Server ist, also niemand vor dem Bildschirm sitzt, würde ich das Ding auf runlevel 3, also ohne GUI laufen lassen. Im Ernstfall kann man immer noch X-Anwendungen per “ssh -X” auf einer anderen Maschine starten oder an der Konsole “init 5” eingeben.
    Stellst Du entweder als Bootoption im Grub ein (einfach eine “3” als Startoption) oder im Yast Runlevel Editor, Expertenoptionen.

Gruß
Uwe