Dieser Blog läuft unter WordPress. Die ersten Gehversuche unter nahm ich mit diesen Blog bei einem Web Hosting Provider. Die Antwortzeiten von im Schnitt 4 Sekunden waren doch recht ernüchternd, so dass ich das Thema Performance etwas gründlicher untersuchte.

Zunächst installierte ich mir WordPress auf meinen ThinkPad W500. Dieser besitzt 4 GB RAM und einen Intel T9600 @ 2.8 GHz. Mit dem Lorem Ipsum Plugin war der Blog schnell gefüllt und der Test konnte losgehen. Um den Lasttest selbst durchzuführen wurde JMeter benutzt. Gestartet wurde mit 100 Page Requests pro Minute. Dies dürfte schon weitaus mehr sein als ein normaler Blog in der Regel an Traffic sieht. Trotzdem habe ich die 100 PR/m gewählt, da der Blog ja nicht bei einem plötzlichem Besucheransturm zusammen brechen soll. Die Last habe ich dann jeweils um 100 PR/m erhöht. Leider war nach 300 PR/m schon Schluss:

Page RequestsAntwortzeitCPU Auslastung
100 / Min.304 ms25 %
200 / Min.327 ms50 %
300 / Min.374 ms80 %

Bei 300 PR/M lag die CPU Auslastung des Laptops bei 80%. Daraus war schon absehbar, dass keine 400 PR/m machbar sind. Die CPU war dann auch mit 100% Auslastung am Anschlag. Zwar lieferte das System weiterhin Antworten, doch stiegen die Antwortzeiten immer weiter an:

Wie gesagt, dass war der Lasttest einer jungfräulichen WordPress Installation. Googelt man ein wenig zum Thema WordPress und Performance Tuning, so finden sich schnell unzählige Tipps, wie z.B. hier oder hier. Diese habe ich dann nach und nach ausprobiert:

  • Optimierung I: In der wp-config.php werden die Variablen WP_HOME, WP_SITEURL, TEMPLATEPATH, STYLESHEETPATH und WP_MEMORY_LIMIT gemäß dieser Anleitung gesetzt:
    define('WP_HOME', 'http://localhost:8080);
    define('WP_SITEURL', 'http://localhost:8080');
    define('TEMPLATEPATH', '/var/www/blog/wp-content/themes/kofaldt');
    define('STYLESHEETPATH', '//var/www/blog/wp-content/themes/kofaldt');
    define('WP_MEMORY_LIMIT', '96M');
  • Optimierung II: Zusätzlich wird in WordPress die Kompression aktiviert. Dazu müssen in der wp-config.php die Variablen COMPRESS_SCRIPTS, COMPRESS_CSS, ENFORCE_GZIP gesetzt werden:
    define('COMPRESS_SCRIPTS', true);
    define('COMPRESS_CSS', true);
    define('ENFORCE_GZIP', true);
  • Cache Plugin: Für WordPress sind einige Plugins verfügbar mit denen sich die Seiten cachen lassen. Seiten werden nur dann neu berechnet werden, wenn sich auch etwas geändert hat. Die Wahl fiel hier auf das Plugin W3 Total Cache.

Die Ergebnisse im Überblick:

100 PR/m200 PR/m300 PR/m400 PR/m500 PR/m
Grundinstallation304 ms327 ms374 msn.a.n.a.
Optimierung I303 ms324 ms368 msn.a.n.a.
Optimierung II301 ms324 ms344 msn.a.n.a.
Cache Plugin21 ms22 ms20 ms20 ms25 ms

Interpretation

Ein großer Unterschied zwischen den Optimierungen I und II, sowie der Grundinstallation lassen sich nicht wirklich feststellen. Allerdings muss man berücksichtigen, dass der Test lokal durchgeführt wurde. Greift man auf den Server per DSL zu, wo wirkt sich eine aktivierte Komprimierung definitiv aus.

Erst das W3 Total Cache Plugin hat die Performance deutlich verbessert. Die gemessenen Zeiten sind um mehr als eine Größenordnung besser als ohne Cache Plugin. Der erstmalige Aufruf einer Seite lag mit 330 ms bei 100 PR/m zwar ein wenig höher als bei den anderen Konfigurationen, doch ist dies im Vergleich zum Performance Gewinn vernachlässigbar. Die CPU Auslastung lag bei unter 5 %.

Empfehlung

Die Komprimierung wie in Optimierung II beschrieben sollte in jedem Fall aktiviert werden. Dies hilft den Traffic auf der Netzwerkseite zu reduzieren, so dass die Seiten schneller an die User ausgeliefert werden.

Zusätzlich ist der Einsatz eines Cache Plugins wie W3 Total Cache äußerst empfehlenswert. Die CPU wird dadurch erheblich entlastet. Dadurch können die Seiten noch schneller ausgeliefert werden und zusätzlich kann der Server ein deutlich höhere Besucheranzahl verkraften.

Kommentar hinterlassen

Es kann sein, dass dein Kommentar zuerst in die Kommentar-Warteschlange gelangt, danach muss er zuerst von mir freigeschaltet werden. Dies geschieht im Normalfall nach maximal 24h.