Traffikstarke WordPress-Seiten optimieren

Sehr oft ließt man in den verschiedensten Foren dass insbesondere WordPress – Installationen bei 64bit Servern schnell Ihr Limit erreichen und der Server keine Zugriffe mehr zuläßt bzw. sogar komplett nicht mehr erreichbar ist.

Ein Kunde hatte genau dieselben Probleme, welches allerdings Dank der ausführlichen Analyse und Tests der LAMP Solutions GmbH mit mir nun gelöst werden konnte. Hierzu zunächst aber erst mal die Fakten:

  • Server: Quadcore mit 8GB RAM, installiertes Ubuntu 10.04 Server-Edition mit aktuellsten Apache, PHP, MySQL
  • aktuelles WordPress mit gekauftem Theme von ElegantThemes + die üblichen ca. 13-15 aktivierten Plugins inkl. aktiviertem W3TotalCache
  • Insbesondere am Wochenende ca. 40.000 Unique-Visitors / Tag, teils Samstag-Abend 3000-8000 Uniques / Stunde

Grundsätzlich und insbesondere bei den heftigen Zugriffen Samstag Abend ist der Speicherverbrauch an die Decke geknallt, der Server swappte sehr schnell, so dass der gesamte Server nicht mehr erreichbar war und nur noch Hard-Resettet werden konnte. Die ersten Optimierungen waren folgende:

  • PHP Speicherlimit “memory_limit” auf 128M gesenkt
  • Apache-Prozesse auf 150 gesenkt
  • Installation, Aktivierung und Einstellung des WP-Plugins W3TotalCache

Den folgenden Samstag geschah dennoch das Gleiche – keine Änderung gegenüber vorher. Der Speicher lief unheimlich schnell voll und der Server war auch per SSH wieder nicht mehr erreichbar.

Schnell wurde die Entscheidung getroffen, im Hause ein gleiches Test System aufzubauen und damit herum zu testen. Anschließend wurde der APC-Cache von PHP aktiviert und das WP-Plugin W3TotalCache daraufhin eingestellt. Dies brachte schon erhebliche Besserungen und in den Tests verlief dies auch erfolgreich.  Der kommende Samstag sollte uns allerdings eines besseren belehren und schon wieder muckte der Server relativ schnell bei den hohen Lasten.

Auch das zwischenzeitliche Umswitchen auf eine reine englische WordPress – Installation ohne Nutzung der Gettext – Übersetzungen (welches ja oft als Ursache für den hohen Speicherverbrauch verantwortlich gemacht wird) und Deaktivieren einiger Plugins brachte kaum nennbare Verbesserungen.

In der darauf folgenden Woche wurde dann nach Lösungen gesucht und verschiedene Möglichkeiten erörtert. Ein Test mit aktivierten Varnish-Cache war dann schlussendlich die Lösung, der Server-Load sprang selbst bei der hohen Last nicht mal um mehr als 0,2 Prozent nach oben und die WP-Installation lief seitdem selbst bei dem hohem Traffik ohne Probleme durch.

Der Grund ist relativ simpel: Varnish schaltet sich zwischen den Webserver auf dem Port 80, so dass Varnish die Webseiten ausliefert. Bereits gecachte Seiten werden direkt ausgeliefert und solche Anfragen gar nicht mehr an Apache weitergeleitet. Eine weitere Optimierung ist, das Logging vom Webserver auszuschalten, so dass diese Schreibprozesse auf die Festplatte komplett eingespart wird. Mit Varnish allerdings kann man auch dies wieder einschalten und dahin gehend anpassen, dass durchgeleitete Anfrage trotzdem geloggt werden.

Die ausführlichen Testberichte findet man unter dem Artikel W3 Total Cache Einstellungen für WordPress optmieren und dem Artikel Varnish zur Beschleunigung von HTTP Anfragen mit Apache2 der HowTo Sammlung von LAMP Solutions GmbH.

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">