Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Wordpress on steroids<br />WordcampSwitzerland<br />Philip Hetjens<br />Blogwerk AG<br />7. Mai 2011<br />
Übersicht<br />Was kann man machen<br />Was bringt‘s<br />Wie geht’s genau<br />
Was kann man machen?<br />
Anatomie eines Wordpress-Requests I<br />PHP-Dateien<br />PHP<br />Webserver<br />DB<br />Internet<br />Client<br />
Anatomie eines Wordpress-Requests II<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />DB<br />Internet<br /...
Anatomie eines Wordpress-Requests III<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />DB<br />Object-Cache...
Anatomie eines Wordpress-Requests III<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<b...
Was bringt‘s?<br />
Ausgangslage<br />Amazon EC2<br />Large Instance (m1.large) 7,5 GB Speicher, 4 EC2 Compute Units (2 virtuelle Kerne mit je...
Ausgangslage<br />Daten<br />Von neuerdings.com<br />Artikel: 7679<br />Kommentare: 28819<br />Test: <br />ab -n 100 -c 10...
Lighttpd + PHP 5.3 als fast-CGI<br />Noch keine Optimierungen<br />Standardinstallation, nur Änderung der Werte<br />"PHP_...
eAccelerator<br />Performance-Test<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<br /...
eAccelerator<br />Hat zwei Module: Opcache-Cache und Data-Cache<br />Vergleichbar: XCache, APC<br />Nur Benutzung der Opco...
MySQL/memcached<br />Performance-Test<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<b...
MySQL/memcached<br />Funktion in Wordpress<br />Viele berechnete Ergebnisse aus Datenbankabfragen werden zwischengespeiche...
MySQL<br />Für ein Kundenprojekt entwickelt<br />Speichert die object-cache-Daten in einer separaten MySQL-Tabelle<br />Id...
memcached<br />Viel eingesetzter flüchtiger Key-/Value-Store<br />Das Debian-Paket heisst: php5-memcache (nicht php5-memca...
WP-Super-Cache<br />Performance-Test<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<br...
WP-Super-Cache<br />Gegen einen Reverse-Proxy entschieden<br />Der Einsatz eines WP-Plugins ist für uns besser zur Steueru...
Wie geht‘s genau?<br />
MySQL<br />Kann nicht viel dazu sagen<br />Sind umgestiegen von einem eigenen DB-Server zu Amazon RDS weitestgehend in Sta...
Nutzung von object-cache in eigenen Plugins<br />Trennung von Datenbeschaffung und Ausgabe<br />function get_gallery2($par...
Nutzung von Amazon S3 zum Bilder speichern<br />Social Media Kit-Logik<br />Wollten Wordpress-Logik erhalten, deswegen Ver...
Generelle Tipps<br />Weniger HTTP-Requests (CSS, Bilder, JavaScript kombinieren)<br />Expiration-Headers und E-Tags<br />G...
Fragen? Danke!<br />
Nächste SlideShare
Wird geladen in …5
×

Wordpress on steroids

1.432 Aufrufe

Veröffentlicht am

Dieser Workshop konzentriert sich auf WordPress-spezifische Möglichkeiten, und zeigt welche und wie wir bei der Blogwerk AG Performanceoptimierungen an unseren Blogs vorgenommen haben. Wichtige Themen dabei sind der Object-Cache mit verschiedenen Caching-Backends, Full-Site-Cachinglösungen, wie WP Super Cache und PHP-Optimierungen.

Veröffentlicht in: Technologie, Business
  • Gehören Sie zu den Ersten, denen das gefällt!

Wordpress on steroids

  1. 1. Wordpress on steroids<br />WordcampSwitzerland<br />Philip Hetjens<br />Blogwerk AG<br />7. Mai 2011<br />
  2. 2. Übersicht<br />Was kann man machen<br />Was bringt‘s<br />Wie geht’s genau<br />
  3. 3. Was kann man machen?<br />
  4. 4. Anatomie eines Wordpress-Requests I<br />PHP-Dateien<br />PHP<br />Webserver<br />DB<br />Internet<br />Client<br />
  5. 5. Anatomie eines Wordpress-Requests II<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />DB<br />Internet<br />Client<br />
  6. 6. Anatomie eines Wordpress-Requests III<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />DB<br />Object-Cache<br />Internet<br />Client<br />
  7. 7. Anatomie eines Wordpress-Requests III<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<br />Object-Cache<br />Internet<br />Client<br />
  8. 8. Was bringt‘s?<br />
  9. 9. Ausgangslage<br />Amazon EC2<br />Large Instance (m1.large) 7,5 GB Speicher, 4 EC2 Compute Units (2 virtuelle Kerne mit jeweils 2 EC2 Compute Units), 850 GB lokaler Instanzspeicher, 64-Bit-Plattform<br />«Eine EC2 Compute Unit bietet die entsprechende CPU-Kapazität eines 1,0-1,2 GHz Opteron oder Xeon Prozessors von 2007. Dies entspricht außerdem einem 1,7 GHz Xeon Prozessor Anfang 2006»<br />Webserver-Root auf Elastic Block Storage<br />UbuntuLucid 10.04 (64 Bit, alle Patches installiert)<br />Lighttpd 1.4.x + PHP 5.3.x<br />Separater Datenbankserver (gleicher Instanztyp)<br />Performance-Tests<br />
  10. 10. Ausgangslage<br />Daten<br />Von neuerdings.com<br />Artikel: 7679<br />Kommentare: 28819<br />Test: <br />ab -n 100 -c 10 http://neuerdings.com/<br />aus dem gleichen Netzwerk<br />Gzip-Komprimierung nicht getestet<br />Performance-Tests<br />
  11. 11. Lighttpd + PHP 5.3 als fast-CGI<br />Noch keine Optimierungen<br />Standardinstallation, nur Änderung der Werte<br />"PHP_FCGI_CHILDREN" => 18<br />"PHP_FCGI_MAX_REQUESTS" => 1000<br /> 50% 5646<br /> 66% 5905<br /> 75% 6113<br /> 80% 6217<br /> 90% 6821<br /> 95% 7174<br /> 98% 7528<br /> 99% 7815<br /> 100% 7815<br />Performance-Test<br />
  12. 12. eAccelerator<br />Performance-Test<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<br />Object-Cache<br />Internet<br />Client<br />
  13. 13. eAccelerator<br />Hat zwei Module: Opcache-Cache und Data-Cache<br />Vergleichbar: XCache, APC<br />Nur Benutzung der Opcode-Caching-Funktionen (wg. CGI/unterschiedlicher Prozesse)<br /> 50% 4454<br /> 66% 4725<br /> 75% 5031<br /> 80% 5214<br /> 90% 5642<br /> 95% 5901<br /> 98% 6085<br /> 99% 6152<br /> 100% 6152<br />Performance-Test<br />
  14. 14. MySQL/memcached<br />Performance-Test<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<br />Object-Cache<br />Internet<br />Client<br />
  15. 15. MySQL/memcached<br />Funktion in Wordpress<br />Viele berechnete Ergebnisse aus Datenbankabfragen werden zwischengespeichert (z.B. Options oder User)<br />Einfache API innerhalb von Wordpress, um auch von Plugins benutzt werden können<br />Google: wordpress objectcache <cache-interface> (eaccelerator, memcached, xcache, usw.)<br />Datei einfach wp-content/object-cache.php benennen<br />Zwischenspeicherung von rund 130 Werten (bei uns) pro Aufruf<br />Dramatische Reduzierung der Datenbankanfragen<br />Performance-Test<br />
  16. 16. MySQL<br />Für ein Kundenprojekt entwickelt<br />Speichert die object-cache-Daten in einer separaten MySQL-Tabelle<br />Idee: Nicht bei den Datenbankabfragen selbst punkten, sondern beim Berechnen und Zusammenführen der Daten auf PHP-Ebene<br /> 50% 7148<br /> 66% 7569<br /> 75% 7902<br /> 80% 8118<br /> 90% 9021<br /> 95% 9268<br /> 98% 9825<br /> 99% 10084<br /> 100% 10084<br />Performance-Test<br />Hat nicht funktioniert.HAHA<br />
  17. 17. memcached<br />Viel eingesetzter flüchtiger Key-/Value-Store<br />Das Debian-Paket heisst: php5-memcache (nicht php5-memcached)<br />Die Last auf dem Webserver verdoppelt sich<br /> 50% 3931<br /> 66% 4318<br /> 75% 4516<br /> 80% 4677<br /> 90% 4915<br /> 95% 5337<br /> 98% 5426<br /> 99% 5728<br /> 100% 5728<br />Performance-Test<br />
  18. 18. WP-Super-Cache<br />Performance-Test<br />PHP-Dateien<br />Opcode-Cache<br />PHP<br />Webserver<br />HTML-Cache<br />DB<br />Object-Cache<br />Internet<br />Client<br />
  19. 19. WP-Super-Cache<br />Gegen einen Reverse-Proxy entschieden<br />Der Einsatz eines WP-Plugins ist für uns besser zur Steuerung von Updates der Seite<br />Requests gehen komplett an Wordpress vorbei<br /> 50% 136<br /> 66% 141<br /> 75% 144<br /> 80% 148<br /> 90% 155<br /> 95% 166<br /> 98% 170<br /> 99% 173<br /> 100% 173<br />Performance-Test<br />#hust<br />
  20. 20. Wie geht‘s genau?<br />
  21. 21. MySQL<br />Kann nicht viel dazu sagen<br />Sind umgestiegen von einem eigenen DB-Server zu Amazon RDS weitestgehend in Standard-Installation<br />Wordpress bei uns nun auf InnoDB<br />rund 20% weniger CPU-Last auf dem DB-Server<br />sonst kein merkbarer Unterschied<br />Optimierungen<br />
  22. 22. Nutzung von object-cache in eigenen Plugins<br />Trennung von Datenbeschaffung und Ausgabe<br />function get_gallery2($parent) {<br /> $result = wp_cache_get('gallery_'.$parent,'');<br /> if (false == $result) {<br /> $result = get_gallery($parent);<br />wp_cache_add('gallery_'.$parent,$result,'',900);<br /> }<br /> return $result;<br />}<br />Optimierungen<br />
  23. 23. Nutzung von Amazon S3 zum Bilder speichern<br />Social Media Kit-Logik<br />Wollten Wordpress-Logik erhalten, deswegen Verschiebung auf Serverlevel<br />Nur Anpassung des Upload-Path in Wordpress<br />/wp-content/uploads/<static-Domain>/request-timestamp/bild.jpg<br />Script mit inotifywait-Schleife<br />Regelmässig aufräumen!<br />Optimierungen<br />
  24. 24. Generelle Tipps<br />Weniger HTTP-Requests (CSS, Bilder, JavaScript kombinieren)<br />Expiration-Headers und E-Tags<br />GZIP-Kompression<br />Nicht so viele DNS-Abfragen<br />Verkleinern von CSS, JavaScript, HTML und Bildern<br />Keine Doppelten Scripts<br />Ja, ich weiss, wir halten uns auch nicht immer dran ;-)<br />Optimierungen<br />
  25. 25. Fragen? Danke!<br />

×