Katastrophale MySQL Client Performance bei CentOS mit PHP
Auf meinem Centos 5 Server ist die MySQL Client Performance von PHP 5.1. katastrophal
Hallo!
Ich versuche derzeit einen alten SUSE Linux Webserver durch zwei virtuelle Webserver mit CentOS zu ersetzen. Diese Maschinen laufen auf einem VMWare ESXi Server und haben jeweils 1024MB Ram. Ich habe den Apache Server mit PHP 5.1.6 (aktuelle Version im Repository) und MySQL Unterstützung installiert. Der MySQL Server ist auf einer speraten dezidierten Maschine. Neben PHP läuft auch ein Tomcat Server mit modjk. Mein Problem ist, dass die MySQL Performance mit PHP auf diesem Server wirklich katastrophal ist. Wir haben moodle drauf laufen und die Performance war so katastrophal, dass man nicht arbeiten konnte. Erst als wir die moodle Datenbank wieder auf den alten Server umgeleitet haben ist die Perfomance wieder normal.
Hier unsere Konfiguration:
Windows 2003 Server mit MySQL 5.1.46
Centos 5.4 mit MySQL Client Library 5.0.77
Die Java Anwendungen haben hingegen eine gute MySQL Performance. Auch bei der Typo3 Homepage die auf dem alten SUSE Linux Server läuft und die Datenbank auch auf dem Windows 2003 Server hat erkennt man keine Perfomance Probleme. Die Probleme treten nur bei PHP Anwendungen auf die vom CentOS auf den Windows 2003 DB Server zugreifen. Vom CentOS auf die alte MySQL DB auf dem Suse Linux tritt auch kein Perfomance Problem auf?
Jetzt meine Frage:
Der MySQL Server hat eine neuerer Version als die MySQL Client library, kann das wirklich die Ursache für dieses Problem sein? Wenn ja wie kann ich eine aktuellere MySQL Library installieren. Als ich das probiert habe passten die dependencies mit PHP nicht mehr. Im Repository gibt es leider auch keine aktuelleren Libraries.
Vielen Dank für eure Hilfe,
Florian
Hallo!
Ich versuche derzeit einen alten SUSE Linux Webserver durch zwei virtuelle Webserver mit CentOS zu ersetzen. Diese Maschinen laufen auf einem VMWare ESXi Server und haben jeweils 1024MB Ram. Ich habe den Apache Server mit PHP 5.1.6 (aktuelle Version im Repository) und MySQL Unterstützung installiert. Der MySQL Server ist auf einer speraten dezidierten Maschine. Neben PHP läuft auch ein Tomcat Server mit modjk. Mein Problem ist, dass die MySQL Performance mit PHP auf diesem Server wirklich katastrophal ist. Wir haben moodle drauf laufen und die Performance war so katastrophal, dass man nicht arbeiten konnte. Erst als wir die moodle Datenbank wieder auf den alten Server umgeleitet haben ist die Perfomance wieder normal.
Hier unsere Konfiguration:
Windows 2003 Server mit MySQL 5.1.46
Centos 5.4 mit MySQL Client Library 5.0.77
Die Java Anwendungen haben hingegen eine gute MySQL Performance. Auch bei der Typo3 Homepage die auf dem alten SUSE Linux Server läuft und die Datenbank auch auf dem Windows 2003 Server hat erkennt man keine Perfomance Probleme. Die Probleme treten nur bei PHP Anwendungen auf die vom CentOS auf den Windows 2003 DB Server zugreifen. Vom CentOS auf die alte MySQL DB auf dem Suse Linux tritt auch kein Perfomance Problem auf?
Jetzt meine Frage:
Der MySQL Server hat eine neuerer Version als die MySQL Client library, kann das wirklich die Ursache für dieses Problem sein? Wenn ja wie kann ich eine aktuellere MySQL Library installieren. Als ich das probiert habe passten die dependencies mit PHP nicht mehr. Im Repository gibt es leider auch keine aktuelleren Libraries.
Vielen Dank für eure Hilfe,
Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 141598
Url: https://administrator.de/contentid/141598
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
2 Kommentare
Neuester Kommentar
Moin,
die Antwort auf deine Frage lautet: 17!
Ok, ernsthaft: Natürlich kann die Biblethek das Problem sein - aber ehrlich gesagt glaube ich daran noch nicht. Die andere Option wäre: Lief dein Win-Server auch auf ner VM? Grade wenn du viele kleine Abfragen hast kann es zu nem Problem werden wenn es VMs sind. Denn da musst du ja immer den ganzen Kram mit virtueller Netzwerkkarte auf reale Netzwerkkarte (am VM-Server) erledigen, du musst warten bis auf der realen Netzwerkkarte etwas für dich frei ist (auch ne 100 MBit-Karte oder auch ne 10 GBit-Karte bekommt die Daten zwar schnell weg - aber wenn eine VM da jetzt einige tausend Anfragen an die DB stellt dann ist die Karte einfach mal belegt...). Dann kommt noch dazu das du ja praktisch noch nen NAT machst (zumindest meistens),... Und das alles kann bei ner Datenbank dann auch dafür sorgen das die Datenrate in den Keller geht...
Nächster Punkt ist natürlich auch etwas: Nen dedizierter SQL-Server ist zwar gut - wenn man aber extrem viel kleine Daten darein pusten will (z.B. Messwerte von einem Sensor - sagen wir mal 1000 pro Sekunde) und das Programm jeden Wert einzel speichern möchte dann kommt ggf. auch einfach das Netzwerk nicht mehr hinterher. Auch da gilt wieder: Egal ob du nun 1 MBit, 1 GBit oder 10 GBit hast - mehr als nen Paket kann keine Karte versenden. Und wenn man hier 1000x pro Sekunde sagt "Schick mal nen Insert" - dann hast du einfach ein Zeitproblem. Hier könnte man entweder die Software entsprechend anpassen (die Werte in den Speicher packen und dann einmal pro x Sekunden ein Insert mit mehreren Werten rauspacken) oder falls das nicht möglich ist versuchen das durch Technik zu umgehen (z.B. MySQL-Proxy oder als Hardcore-Lösung nen MySQL-Cluster aufbauen bei dem auf jedem Webserver auch gleich nen Node is...)
Ich glaube also es gibt da eine vielzahl von Möglichkeiten wo das Problem liegt. Das genau zu finden ist nun das Problem des Tages (rate mal warum nen DB-Admin mehr als nen normaler Sys-Admin verdient ;) ). Aber es einfach mal auf ne Client-Bib. zu werfen ist doch etwas zu simpel ;)
die Antwort auf deine Frage lautet: 17!
Ok, ernsthaft: Natürlich kann die Biblethek das Problem sein - aber ehrlich gesagt glaube ich daran noch nicht. Die andere Option wäre: Lief dein Win-Server auch auf ner VM? Grade wenn du viele kleine Abfragen hast kann es zu nem Problem werden wenn es VMs sind. Denn da musst du ja immer den ganzen Kram mit virtueller Netzwerkkarte auf reale Netzwerkkarte (am VM-Server) erledigen, du musst warten bis auf der realen Netzwerkkarte etwas für dich frei ist (auch ne 100 MBit-Karte oder auch ne 10 GBit-Karte bekommt die Daten zwar schnell weg - aber wenn eine VM da jetzt einige tausend Anfragen an die DB stellt dann ist die Karte einfach mal belegt...). Dann kommt noch dazu das du ja praktisch noch nen NAT machst (zumindest meistens),... Und das alles kann bei ner Datenbank dann auch dafür sorgen das die Datenrate in den Keller geht...
Nächster Punkt ist natürlich auch etwas: Nen dedizierter SQL-Server ist zwar gut - wenn man aber extrem viel kleine Daten darein pusten will (z.B. Messwerte von einem Sensor - sagen wir mal 1000 pro Sekunde) und das Programm jeden Wert einzel speichern möchte dann kommt ggf. auch einfach das Netzwerk nicht mehr hinterher. Auch da gilt wieder: Egal ob du nun 1 MBit, 1 GBit oder 10 GBit hast - mehr als nen Paket kann keine Karte versenden. Und wenn man hier 1000x pro Sekunde sagt "Schick mal nen Insert" - dann hast du einfach ein Zeitproblem. Hier könnte man entweder die Software entsprechend anpassen (die Werte in den Speicher packen und dann einmal pro x Sekunden ein Insert mit mehreren Werten rauspacken) oder falls das nicht möglich ist versuchen das durch Technik zu umgehen (z.B. MySQL-Proxy oder als Hardcore-Lösung nen MySQL-Cluster aufbauen bei dem auf jedem Webserver auch gleich nen Node is...)
Ich glaube also es gibt da eine vielzahl von Möglichkeiten wo das Problem liegt. Das genau zu finden ist nun das Problem des Tages (rate mal warum nen DB-Admin mehr als nen normaler Sys-Admin verdient ;) ). Aber es einfach mal auf ne Client-Bib. zu werfen ist doch etwas zu simpel ;)