Das Putzlowitsch Test- und SEO-Blog

Warum WordPress bei Strato so langsam ist

Eigentlich müßte ich besser sagen, was ist kein Grund dafür, daß WordPress beim Strato-Shared-Webhosting so langsam ist. Denn an einer vermeintlich schlechten Datenbankanbindung bzw. Datenbankperformance, wie man es oft in Foren oder auf Blogs lesen kann, liegt es nicht.

Datenbankgeschwindigkeit, der Test

Bei WordPress kann man sich alle Datenbankabfragen als SQL-String mit Ausführungszeiten und Aufrufhierarchie in Datenbank-Objekt unter $wpdb->queries speichern lassen. Dazu muß man in der wp-config.php die Konstante ‚SAVEQUERIES‘ mit true definieren:

define( 'SAVEQUERIES', true );

Genau das habe ich für die Startseite von schnurpsel.de gemacht und mir die Daten als PHP-Array in eine Datei geschrieben:

global $wpdb;
ob_start();
var_export( $wpdb->queries );
$out1 = ob_get_contents();
ob_end_clean();
plw123_debugfile_write( $out1 );

Diese Liste mit 51 SQL-Abfragen habe ich in ein einfaches PHP-Skript eingebunden und arbeite die Abfragen hintereinander ab. Es wird zunächst ein Connect zur Datenbank ausgeführt und anschließend folgende Schleife durchlaufen:

foreach( $sql_queries as $query ) {
	$dbd = @mysql_query( $query[0], $dbh );

	while( $row = @mysql_fetch_object( $dbd ) ) {
		$last_result[$num_rows] = $row;
		$num_rows++;
	}
	@mysql_free_result( $dbd );
	$num_queries++;
}

Es werden natürlich nicht nur die SQL-Abfragen ausgeführt, sondern auch die Ergebnisdatensätze mit mysql_fetch_object abgeholt. Nur die Ausgabe der Daten spare ich mir, das hat dann aber sowieso nichts mehr mit der Datenbank zu tun.

Datenbankgeschwindigkeit, das Ergebnis

Mal von ein paar Lastspitzen abgesehen, werden die 51 Abfragen und 539 Ergebnisdatensätze vom Strato MySQL 5 Server in etwa 0,2 Sekunden abgearbeitet. Man kann das hier [test-db-mysql5] live testen.

Ich habe das auch mal mit MySQL 4 probiert, da sind die Werte sogar noch etwas besser und liegen meist bei 0,1 Sekunden oder darunter [test-db-mysql4].

Und als dritten Test habe ich eine externe Datenbank (bei Host-Europe) eingebunden [test-db-ext]. Die 0,5 bis 0,6 Sekunden sind gar nicht mal so schlecht wenn man bedenkt, daß alle Daten über das Internet von Strato (Karlsruhe/Berlin) zu Host-Europe (Köln) und wieder zurück befördert werden müssen.

Mein Fazit

Die schlechte Geschwindigkeit von WordPress (und anderen umfangreichen PHP-Applikationen wie z.B. Joomla) liegt ursächlich nicht an einer schlechten Datenbankperformance, sondern vielmehr an einem nicht besonders schnellen Webserver/PHP.

Was hier nun im einzelnen das Problem ist, kann ich nicht sagen. Ein Geschwindigkeits-Nachteil ist sicher die Tatsache, daß PHP bei Strato als CGI läuft. Das bedeutet, daß für jeden Seitenaufruf ein neuer PHP-Prozeß gestartet werden muß. Konfigurationen, bei denen PHP als Apache-Modul läuft, haben da natürlich einen Geschwindigkeitsvorteil.
Vielleicht muß ja auch jede PHP-Datei bei Strato erst einen Sicherheitcheck durchlaufen, bevor sie geladen wird oder was auch immer.

Ein weiterer Hinweis für die mäßige PHP/Webserver-Performance sind auch die nicht besseren Ladezeiten des Strato Weblog-Basic, denn da ist überhaupt kein MySQL-Datenbankserver im Spiel. Die Daten liegen auf dem Webspace des Users und werden per SQLite eingebunden.

Trotz eigentlich nicht schlechter MySQL Datenbankgeschwindigkeit wird meine Startseite hier nicht schneller als in etwa 3,5 Sekunden geladen, dabei verwende ich fast eine WP-Standardkonfiguration ohne umfangreichen Plugins.

Meine Ausführungen tragen zwar nicht zur Lösung des Geschwindigkeitsproblems bei, aber vielleicht zum Verständnis der Ursache und Problematik an sich.

58 Kommentare »

Kleinere Brötchen backen

BrötchenKleinere Brötchen backen heißt soviel wie zurückstecken, in seinen Forderungen zurückgehen, Abstriche machen, sich mäßigen, bescheidener werden. Dabei sind Brötchen schon recht klein, denn es sind wörtlich genommen kleine Brote.

Man kann und muß natürlich nicht immer alles wörtlich nehmen, denn eigentlich ist das hier ja mein „WordPress bei Strato Testblog“ (siehe oben unter dem Titel). Brötchen haben zugegebenermaßen wenig mit WordPress oder Strato zu tun, aber ein Test ist das hier allemal, nämlich ein Brötchentest.

Keine Kommentare »

Webmaster-Friday heute: Twitter

Schade, schade. Zum heutigen Webmaster-Friday kann ich gar keinen Artikel schreiben, weil ich mich mit Twitter überhaupt nicht auskenne, ja es nicht mal nutze. So kann ich natürlich die Frage „Wie effektiv ist twittern?“ überhaupt nicht beantworten.

Nun gibt es aber ein Problem, oder auch nicht. Da ich das aktuelle Webmaster-Friday-Thema oben verlinkt habe, wird mein Blog an das Webmaster-Friday-Blog einen Ping bzw. Trackback senden. Damit erscheint dann dort möglicherweise ein Anrißtext und Link zu meinem Artikel, obwohl ich überhaupt nichts zum Thema Twitter zu sagen habe, außer daß ich zum Thema Twitter nicht zu sagen habe.

Falls die Ping- und Trackbacks dort aber moderierte werden, wird das vielleichtr einfach nicht freigeschaltet, was auch nicht weiter schlimm wäre.

Ich will einfach nur nochmal auf die Interessante Idee des Webmaster-Fridays hinweisen, es kommen bestimmt noch andere Themen zu denen ich dann vielleicht einen wirklichen Beitrag leisten kann. Schließlich kann ich ja selbst Themen vorschlagen und mit abstimmern.

Beim heutigen Thema „Wie effektiv ist twittern?“ bin ich aber außen vor.

Weitere Artikel mit Bezug zu diesem:
Ein Kommentar »

Webmaster Friday – es geht los

Eher durch Zufall habe ich vom Webmaster-Friday erfahren und finde das eine gute Idee. Jeden Freitag wird ein Thema ausgerufen, zu dem man dann seine Gedanken auf der eigenen Seite, sei es nun Blog, Forum oder sonstwas, veröffentlichen kann, wenn man will. Das heutige Webmaster-Friday-Thema ist der Webmaster Friday selbst. Gut, er muß ja erstmal ein wenig bekannt gemacht werden, sonst sind dann bei den „richtigen“ Themen vielleicht nicht viele Leute dabei.

Falls es mal ein Thema zu eher technischen Dingen aus dem Bereich WordPress, Pluginentwicklung, PHP-Programmierung oder Webhosting gibt, bin ich sicher dabei, naja, falls ich dann Zeit habe.

Wenn sich nun noch jemand wundert, warum diese Seite hier nicht besonders schnell lädt, das liegt an Strato und WordPress, zwei Dinge, die nicht wirklich zusammenpassen.

Weitere Artikel mit Bezug zu diesem:
3 Kommentare »

Das neue WordPress 2.8

Diesmal habe ich nicht lange gefackelt und bereits zwei Tage nach dem Erscheinen der neuen WordPressversion 2.8 die 2.8er DE-Ausgabe gezogen und installiert. Bei 2.7 hatte ich ja erst die 2.7.1 abgewartet und nach den Problemen die aich da hatte, kann mich nichts mehr abschrecken :-)

Hat hier auch alles reibungslos funktioniert. Ich habe zunächst meine Schnurpsel-Seite in den Wartungsmodus versetzt, was ja seit WP 2.7 auch ohne Plugin funktioniert. Dann habe ich die Datenbank gesichert, das neue WP 2.8 komplett in ein neues Verzeichnis (blog_28) kopiert, mein spezielles Kopierskript angeworfen, welches mir alle individuellen Dateien (Plugins, Theme, Uploads, Config) aus der laufenden Installation in die neue kopiert und dann nur noch die Verzeichnisse auf meinem Webspeicherplatz umbenannt (blog -> blog_271 und blog_28 -> blog). Nun mußte ich nur noch den Wartungsmodus deaktivieren, die Datenbank durch Aufruf der upgrade.php auf den neusten Stand bringen und alles war gegessen. So einfach ist das :-)
Alle Plugins und das Theme scheinen erstmal fehlerfrei zu laufen.

Allerdings hatte die DE-Version 2.8 eine kleinen Fehler im Default-Theme. Das wäre mir beim Update ja nicht aufgefallen, aber da ich demnächst ein neues Webprojekt starte, habe ich dafür ein frische WP 2.8 installiert und da ich dort eine angepaßte Installation ohne diesen ersten Artikel, Kommentar und Seite verwende, trat der Fehler dann auf. Er wurde aber bereits kurz nach meiner Meldung im WP-Deutschland-Forum behoben.

Bei Putzlowitsch warte ich erstmal noch etwas, bis ich sicher bin, daß wirklich alles problemlos funktioniert, vielleicht stelle ich dann erst wieder mit der 2.8.1 um, mal sehen, mal gucken, mal schauen.

Ein Kommentar »