|
|
 | | From: | Frederic Beister | | Subject: | mySQL langsam | | Date: | Tue, 26 Oct 2004 21:46:10 +0200 |
|
|
 | Moinsen!
Ich hab hier ein kleines Problem bei dem Ihr mir eventuell helfen könntet. Ich habe ein System mit RedHat Linux, Apache, PHP4, mySQL aufgesetzt. (2GHz, 1GB RAM, 2HDDs im Software-RAID0) und eine Kommunikationsplattform für ein Firmen-LAN programmiert (Nachrichten, Anwesenheitsliste etc.) Wenns hoch kommt sind 40 Leute eingeloggt bei denen das (immer offene) Nachrichtenzentrum alle 5 Minuten aktualisiert wird. Ausserdem klicken die Leute natürlich auch in den anderen Funktionen rum und produzieren Anfragen auf die Datenbank (Hauptsächlich SELECTs, nur wenige INSERTs).
Seit einiger Zeit ist der Seitenaufbau z.B. im Nachrichtenzentrum unerträglich langsam geworden und ich bin mit meinem Latein am Ende. Ich habe folgendes probiert:
- Indexes schlauer setzen - An mySQL-Variablen "rumdoktern" - Tabellen regelmässig durch Script aufräumen lassen
Doch hatte leider keinen Erfolg. Wenn ich schätzen sollte, wieviele Anfragen die Datenbank so bewältigen muss:
40 Leute, 1 SELECT pro 5 Minuten, pro gefundenem Datensatz nochmal 1 SELECT auf eine Andere Tabelle um zu überprüfen ob die Nachricht von diesem User gelöscht wurde. Bei angenommenen 20 Nachrichten pro Person sind das 40*20*2=1600 SELECTs pro 5 Minuten, also 5 Anfragen/Sekunde (und das nur für das Nachrichtenzentrum). Ich dachte eigentlich, mySQL wäre so skalierbar, dass es auch diesem "Ansturm" trotzen kann. Aber vielleicht muss dann doch eine kommerzielle Datenbank her.
Für Tipps wäre ich seeehr dankbar!
Gruß Frederic
|
|
 | | From: | Torsten Schneider | | Subject: | Re: mySQL langsam | | Date: | Tue, 26 Oct 2004 20:03:35 +0000 (UTC) |
|
|
 | Frederic Beister wrote:
>40 Leute, 1 SELECT pro 5 Minuten, pro gefundenem Datensatz nochmal 1 SELECT >auf eine >Andere Tabelle um zu überprüfen ob die Nachricht von diesem User gelöscht >wurde. Bei >angenommenen 20 Nachrichten pro Person sind das 40*20*2=1600 SELECTs pro 5 >Minuten, >also 5 Anfragen/Sekunde (und das nur für das Nachrichtenzentrum). Ich dachte >eigentlich, >mySQL wäre so skalierbar, dass es auch diesem "Ansturm" trotzen kann. Aber >vielleicht >muss dann doch eine kommerzielle Datenbank her.
Hast du mal zu Spitzenlastzeiten probiert, von der Shell aus Queries abzusetzen?
Die Anzahld er Queries ist eher winzig, außer, diese sind sehr ungeschickt erstellt.
Was sagt denn top in diesem Falle?
Grüße, Torsten
|
|
 | | From: | Frederic Beister | | Subject: | Re: mySQL langsam | | Date: | Mon, 1 Nov 2004 10:32:15 +0100 |
|
|
 | "Torsten Schneider" schrieb: > Hast du mal zu Spitzenlastzeiten probiert, von der Shell aus Queries > abzusetzen?
Ja. Allein das einloggen dauerte 20 Sekunden :)
> Was sagt denn top in diesem Falle?
Der mysqld brauchte teilweise 95% CPU und darunter liefen noch ca. 10 httpd-Childprozesse. Das Problem hat ich mittlerweile aufgeklärt ... .... was auch nur eine Tabelle ohne Indizes bewirken kann ... jetzt habe ich teilweise unter Volllast eine CPU-Idle von 99,5 - 100%
Danke auch allen!
Gruß Frederic
|
|
|