Sandy Drobic schrieb:
Carsten Boehlke wrote:
Sandy Drobic schrieb:
Carsten Boehlke wrote:
Hallo Liste
Auf meinem Opensuse 10.2 habe ich folgendes Problem. In relativ unregelmäsigen Abständen (1 Tag bis mehrer Wochen) friert der Server ein, so dass nur noch ein Hard-Reset (Root-Server beim Provider) hilft. Im message log steht dann folgender Eintrag:
Jul 22 21:08:00 www kernel: Total swap = 2096440kB Jul 22 21:08:00 www kernel: Free swap: 0kB Jul 22 21:08:00 www kernel: 261872 pages of RAM Jul 22 21:08:00 www kernel: 5185 reserved pages Jul 22 21:08:00 www kernel: 71622 pages shared Jul 22 21:08:00 www kernel: 1 pages swap cached Jul 22 21:08:00 www kernel: Out of Memory: Kill process 11459 (mysqld) score 125428 and children. Jul 22 21:08:00 www kernel: Out of memory: Killed process 11459 (mysqld). Jul 22 21:08:00 www kernel: oom-killer: gfp_mask=0x201d2, order=0
Der Server ist auf dem neusten Stand, was läuft ist ein Webserver mit CMS (Typo3). Der Server hat 1GB RAM und 2GB Swap, eigentlich nicht extrem wenig.
Was kann man da noch tun?
Grins! Mehr RAM ist immer die billigste Lösung. Wenn du stundenlang nach dem Problem suchen musst, kannst du diese Kosten auch gleich in RAM investieren.
Finde heraus, welche Prozesse den Speicher belegen und warum. Erst dann kannst du mit dem Lösen des Problems anfangen. Es kann sein, das das Problem persistent connections ist oder dass MySQL nicht genügend Verbindungen erlaubt oder was auch immer. Ohne harte Zahlen wirst du nicht weiterkommen.
Ein Script, welches die RAM-Belegung in periodischen Abständen zeigt, könnte bereits helfen. Schau dir auch mal sar an.
Hallo Sandy.
Ich lasse mir jetzt jede Minute mit sar und free die Speicherauslastung in eine Datei schreiben und der Server mailt sie mir jede Stunde zu. Alles, was ich erkennen kann ist, dass die Speicherauslastung von einer auf die andere Minute drastisch nach oben schnellt (Swap-Usage liegt bei 90%+). Das dauert ein paar Minuten, dann läuft garnichts mehr und ich muss den Server resetten.
Wenn dies so schnell erfolgt, dann ist entweder ein Prozess aus cron angestossen worden, der enorm Ressourcen verbraucht, oder der Webserver wird von vielen Anfragen bestürmt. Überprüfe beide Möglichkeiten.
Leider kann ich mit dem Output von sar und free nicht viel anfangen, lediglich die Speicherauslastung kann ich da raus lesen. Im Messages Log gibt es zu der fraglichen Zeit auch keinen Eintrag. Irgendwelche Ideen?
Free gibt nur einen Überblick. Mehr Details verrät dies Ausgabe von top (interaktiv) oder "ps aux".
Wenn du den Prozess oder wenigstens den User identifiziert hast, dann kannst du in /etc/security/limits.conf als Reissleine einige Limits für den user setzen, die den Amoklauf in Grenzen halten, damit wenigstens der Server weiterläuft.
Nun war es wieder soweit. Hier der letzte Eintrag in mein Top-Log: top - 20:25:56 up 2 days, 22:53, 0 users, load average: 79.41, 64.77, 33.58 Tasks: 250 total, 72 running, 177 sleeping, 0 stopped, 1 zombie Cpu(s): 0.4%us, 91.1%sy, 0.0%ni, 0.0%id, 7.7%wa, 0.1%hi, 0.7%si, 0.0%st Mem: 1027004k total, 1018912k used, 8092k free, 2588k buffers Swap: 2096440k total, 2096440k used, 0k free, 5564k cached USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND root 10 -5 0 0 0 D 17.2 0.0 0:52.03 kswapd0 mysql 18 0 501m 13m 792 R 4.0 1.3 61:35.50 mysqld wwwrun 18 0 280m 12m 2064 R 3.0 1.2 0:05.18 httpd2-prefork wwwrun 18 0 287m 14m 2012 R 1.7 1.5 0:02.78 httpd2-prefork wwwrun 18 0 278m 9416 1864 R 1.6 0.9 0:02.50 httpd2-prefork wwwrun 18 0 295m 13m 2024 R 1.6 1.4 0:04.73 httpd2-prefork wwwrun 18 0 302m 14m 2020 R 1.5 1.5 0:04.29 httpd2-prefork wwwrun 18 0 287m 11m 2012 R 1.5 1.2 0:02.13 httpd2-prefork wwwrun 18 0 287m 17m 2012 R 1.5 1.8 0:02.07 httpd2-prefork wwwrun 18 0 287m 14m 2012 R 1.4 1.5 0:02.60 httpd2-prefork Und sar gibt folgendes als letztes aus: 20:25:25 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad 20:25:27 9928 1017076 99.03 2656 6816 4 2096436 100.00 8716 Das ist doch nun der mysqld, oder täuscht mich das? Danke und Gruß Carsten -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org