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.328 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
2 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.328
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
96
Aktionen
Geteilt
0
Downloads
4
Kommentare
2
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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 />

×