Mailinglist Archive: opensuse-de (1081 mails)
| < Previous | Next > |
Re: mysqld und Swap
- From: Carsten Boehlke <suse-list@xxxxxxxxxxxxxxxxx>
- Date: Thu, 31 Jul 2008 20:36:18 +0200
- Message-id: <48920622.2080406@xxxxxxxxxxxxxxxxx>
Sandy Drobic schrieb:
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@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
Carsten Boehlke wrote:Nun war es wieder soweit. Hier der letzte Eintrag in mein Top-Log:
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.
Hallo Sandy.
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.
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.
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@xxxxxxxxxxxx
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+help@xxxxxxxxxxxx
| < Previous | Next > |