php Archiv

Weblog-Performance Part II

Ich möchte die (hoffentlich endliche) Performance-Story fortsetzen. Dass WordPress nicht die performanteste Lösung ist, dürfte hinreichend bekannt sein – die Ladezeiten waren jedoch deutlich explodiert, so dass es Handlungbedarf gab. Part I der Geschichte führte zwar zu Verbesserungen, brachte jedoch nicht das erwünschte Ergebnis.

Etwas ärgerlich war der Umstand, dass sich über die Arbeiten der letzten Zeit ein kleines Fehlerchen in der .htaccess eingeschlichen hat und somit das Caching-Plugin (WP-Supercache) nur noch extra Load verursacht hat. Tatsächlich wurde bei jedem Aufruf ein neuer Snapshot erstellt, dieser jedoch nicht ausgeliefert :-) Dieser Task wäre nun abgehakt und sollte einiges an Ressourcen freisetzen.

Darüber hinaus kommt nun eine weitere Möglichkeit des Cachings zum Einsatz: Scriptcaching. PHP wird bekanntermaßen zur Runtime compiliert, was unter dem Geschwindigkeitsgesichtspunkt ganz sicher nicht die optimale Lösung ist. Der Einsatz von eAccelerator scheint auf die ersten Blick und die ersten Performancetests eine gute Wahl, wobei ich mit der Kundgabe von Freudensprüngen lieber noch eine kurze “Testphase” abwarte.

Was passiert? Die compilierten PHP-Scripte werden gespeichert, so dass nicht bei jedem Aufruf die Notwendigkeit zum Compilen entsteht. Ich erwarte mir davon eine (hoffentlich deutliche) Reduktion der CPU-Load.

Ich wünsche meinen Lesern einen schönen 4. Advent!

Weblog Performance – WordPress, Apache, MySQL, PHP

Meine letzten Abende bestanden zu größeren Teilen aus der Ursachenforschung für die mitunter doch erheblichen Performancepotenziale dieser Seite. Nachdem Google die Kenngröße nun sichtbar in die Webmaster Tools integriert hat und mein schlechtes Gewissen vorher schon grenzenlos war, musste ich mir doch etwas Zeit dafür gönnen.

Kurze Vorgeschichte: nach langer Zeit des Shared Hostings habe ich die Domain (nicht zuletzt der großartigen Möglichkeiten hinsichtlich der Konfiguration) auf einen VPS (Virtual Private Server) umgezogen. Getreu dem Motto “nur Mut” war dies schnell getan. Leider waren die Defizite doch erheblicher als ich vermutet hatte.

Nach einigen Sessions, in denen die Konfiguration noch einen deutlichen “Schliff” erhielt, war es für den Moment erträglich wenn auch nicht zufriedenstellend.

Die Stellschrauben sind begrenzt – angreifen kann man prinzipiell:

  • am Webserver selbst (Apache2) – apache2.conf, httpd.conf
  • am Datenbankserver (MySQL) – my.cnf
  • an der Skriptsprache (PHP) – php.ini
  • an der Anwendung (WordPress) – Caching, Plugins, …

Damit wären die wesentlichen Punkte behandelt. Sie fragen sich nach dem Effekt? Gefühlt schonmal deutlich – in Zahlen schwer messbar, da die Umgebungsparameter (Gesundheitszustand Hostsystem, Anzahl zeitgleicher Zugriffe,… ) einen nicht unwesentlichen Beitrag leisten.

Nun stellt sich die Herausforderung auf eine etwas andere Art und Weise: in Abhängigkeit von der Tageszeit ist die Performance mal ok und eben mal nicht. In Zahlen bedeutet das, dass Sie, werter Leser, zwischen 0,7 und durchaus auch mal 10 Sekunden warten müssen, bis die Inhalte auf dem Server zusammengesetzt sind – der Download ist (breitbandig) in einer wenig spürbaren Zeitspanne abgeschlossen – die Bandbreite sollte also nicht der Flaschenhals sein. Bis zwei, vielleicht auch drei Sekunden liegt man damit ansich im WordPress-Schnitt – zumindest bei etwas besser besuchten Seiten. Mehr erscheint mir allerdings ungünstig, fühlt sich der geneigte Surfer doch schon nach wenigen Sekunden genötigt, nochmal zu klicken oder die Seite zu verlassen.

Und nun? Ich werde die Szenarie noch etwas beobachten – wenn alles nix hilft, muss eben doch eigene Hardware her. Sofern Sie diese Zeilen gerade lesen und Interesse an “Hardware-Sharing” haben, können Sie gern per Mail mit mir in Kontakt treten :-)

Das ganze hat gefühlt etwas von “Simons Cat” – frustrierend und erheiternd zugleich – in diesem Sinne also einen schönen Abend!

Wenns mal wieder länger dauert…

Hab ich doch dieses Blogsystem lokal getestet bis alles toll aussah und beim Hochladen gabs nun doch noch ein Problem. Hätte ich mir damals einen Rechner mit 64 Bit gekauft, wäre das nicht passiert. Bisher dachte ich, dass die Technologien kompatibel seien.

Die Folge war die englische Darstellung einiger Teile der Seite. Wenn jemand interesse daran hat, es sind Änderungen an folgendem Code nötig:

// if ($magic == ($MAGIC1 & 0xFFFFFFFF) || $magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
if ($magic == $MAGIC1 || $magic == $MAGIC3) {
$this->BYTEORDER = 0;
} // elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
elseif ($magic == $MAGIC2) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file
return false;
}

Die “alten” Stellen sind auskommentiert.  So denn :-)

Tags: , ,