Ich bräuchte Ansätze zum Performance-Tuning

Beeeee

New Member
Hallo zusammen,

ich bräuchte wieder ein wenig Unterstützung. Hier ist mal zunächst mein Server:

V-Server von United-Hoster
Betriebssystem Linux 2.6.18-028stab060.8-ent
CPU GenuineIntel, Intel(R) Xeon(R)CPU X3220 @ 2.40GHz
441.3 MB von 768.0 MB frei
PHP-Version: 5.2.9
MySQL-Version: 5.0.45
Server-Version: Apache/2.2.4 (Linux/SUSE)

Auf dem V-Server laufen 5 Domains, 3 Joomla-Installationen, 1 SMF-Installation und ein selbst entwickeltes PHP-Skript ohne sonstige Frameworks.

Das eigene PHP-Skript verwendet eine mySQL-Datenbank, die Haupt-Tabelle hat 85.000 Zeilen mit 60 MB unkomprimiert. Wenn ich das Caching von mySQL abschalte benötigt eine typische SQL-Suche (mit ein paar Joins und LIKEs) per Putty oder per phpMyAdmin ca. 1,5 Sekunden. Genau die gleiche Abfrage über den Apache im PHP-Skript generiert benötigt zur Ausführung 13 Sekunden, eindeutig zu viel für eine Webanwendung. Gemessen habe ich das über microtime () direkt vor und nach mysql_query ().

mySQL habe ich über tuning-primer.sh eingestellt.

Der Flaschenhals scheint mir der Apache zu sein, kann aber auch eine unterdimensionierte Einstellung in der php.ini sein. Hier bräuchte ich ein paar Ansatzpunkte von euch. Gerne kann ich die .ini-Dateien posten, ich wollte euch in meinem ersten Post nicht gleich zumüllern.

Danke schonmal vorab für eure Unterstützung.
 
LigHTTPD Webserver soll performanter als Apache sein und dazu noch weniger RAM verbrauchen. Dazu kann ich aber nichts sagen, da ich im moment noch Apache im Einsatz habe (Ubuntu sowie Windows)

gruss
vb-server
 
Es gibt einige Webserver, die weniger Ressourcen benötigen als der Apache httpd. Meistens auf Kosten der Features.

Andererseits bezweifle ich, dass der Apache httpd der Grund für die langsame Ausführung der Datenbankabfrage ist. Könnte es vielleicht eher sein, dass eine sehr große Anzahl Ergebniszeilen zurückgeliefert wird, die PHP noch verarbeiten muss?
 
Ich glaube auch nicht dass es Apache ist, habe es aber trotzdem mal geschrieben ;)

Vielleicht bringt es etwas, nicht benötigte Module auszuschalten?

gruss
vb-server
 
Andererseits bezweifle ich, dass der Apache httpd der Grund für die langsame Ausführung der Datenbankabfrage ist. Könnte es vielleicht eher sein, dass eine sehr große Anzahl Ergebniszeilen zurückgeliefert wird, die PHP noch verarbeiten muss?

Hmm, nö... mit der erwähnten Abfrage werden aus 85.000 Zeilen 270 Ergebnisse ausgespuckt. Klar braucht php dafür einige Zeit, die Messung der 13 Sekunden erfolgt vor der eigentlichen Ausgabe:
PHP:
$start=microtime (true);
mysql_qery ($sql);
$end=microtime (true);

echo $end - $start;
 
Back
Top