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

Más contenido relacionado

La actualidad más candente

Caching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best PracticesCaching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best PracticesMichael Plöd
 
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2Jonathan Weiss
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudAOE
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with AnsibleSusannSgorzaly
 
Skalieren einer Web Anwendung
Skalieren einer Web Anwendung Skalieren einer Web Anwendung
Skalieren einer Web Anwendung Jonathan Weiss
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Bidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenBidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenMarco Rico Gomez
 
Blogwerk WordPress für die Corporate Website
Blogwerk WordPress für die Corporate WebsiteBlogwerk WordPress für die Corporate Website
Blogwerk WordPress für die Corporate WebsiteBlogwerk AG
 
Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Martin Kliehm
 
Campixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extremeCampixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extremeAlexander Merkel
 
Skalieren von WordPress & WooCommerce
Skalieren von WordPress & WooCommerceSkalieren von WordPress & WooCommerce
Skalieren von WordPress & WooCommerceRobert Windisch
 

La actualidad más candente (13)

Caching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best PracticesCaching - Hintergründe, Patterns und Best Practices
Caching - Hintergründe, Patterns und Best Practices
 
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2Skalieren von Rails Anwendungen mit Amazon S3 und EC2
Skalieren von Rails Anwendungen mit Amazon S3 und EC2
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with Ansible
 
Skalieren einer Web Anwendung
Skalieren einer Web Anwendung Skalieren einer Web Anwendung
Skalieren einer Web Anwendung
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
Bidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für WebanwendungenBidirektionale Verbindungen für Webanwendungen
Bidirektionale Verbindungen für Webanwendungen
 
Blogwerk WordPress für die Corporate Website
Blogwerk WordPress für die Corporate WebsiteBlogwerk WordPress für die Corporate Website
Blogwerk WordPress für die Corporate Website
 
Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)Web Performance Optimierung (WPO)
Web Performance Optimierung (WPO)
 
Campixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extremeCampixx 2012-ladezeit-extreme
Campixx 2012-ladezeit-extreme
 
Skalieren von WordPress & WooCommerce
Skalieren von WordPress & WooCommerceSkalieren von WordPress & WooCommerce
Skalieren von WordPress & WooCommerce
 

Similar a Wordpress on steroids

High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudAOE
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeNico Steiner
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
Webanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und AdministrationWebanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und AdministrationThomas Siegers
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
Site Speed EXTREME - SEOkomm 2014
Site Speed EXTREME - SEOkomm 2014Site Speed EXTREME - SEOkomm 2014
Site Speed EXTREME - SEOkomm 2014Bastian Grimm
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationSamuel Zürcher
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestBastian Feder
 
Globetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHGlobetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHSebastian Heuer
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenICS User Group
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenMayflower GmbH
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storageadesso AG
 
Echtes Single Sign-On mit APEX realisieren
Echtes Single Sign-On mit APEX realisierenEchtes Single Sign-On mit APEX realisieren
Echtes Single Sign-On mit APEX realisierenMT AG
 
Oracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang Rütter
Oracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang RütterOracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang Rütter
Oracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang RütterOPITZ CONSULTING Deutschland
 

Similar a Wordpress on steroids (20)

High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 Bestellsysteme
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Webanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und AdministrationWebanwendungen - Installation, Konfiguration und Administration
Webanwendungen - Installation, Konfiguration und Administration
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Site Speed EXTREME - SEOkomm 2014
Site Speed EXTREME - SEOkomm 2014Site Speed EXTREME - SEOkomm 2014
Site Speed EXTREME - SEOkomm 2014
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Ajax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google SuggestAjax hands on - Refactoring Google Suggest
Ajax hands on - Refactoring Google Suggest
 
Globetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHGlobetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HH
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storage
 
Echtes Single Sign-On mit APEX realisieren
Echtes Single Sign-On mit APEX realisierenEchtes Single Sign-On mit APEX realisieren
Echtes Single Sign-On mit APEX realisieren
 
Node.js
Node.jsNode.js
Node.js
 
GWT
GWTGWT
GWT
 
Oracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang Rütter
Oracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang RütterOracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang Rütter
Oracle ETL Herausforderungen - OPITZ CONSULTING - Till Sander - Wolfgang Rütter
 

Más de Blogwerk AG

Einführung Social Media 22.10.14 Frauennetz Winterthur
Einführung Social Media 22.10.14 Frauennetz WinterthurEinführung Social Media 22.10.14 Frauennetz Winterthur
Einführung Social Media 22.10.14 Frauennetz WinterthurBlogwerk AG
 
Customer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleiten
Customer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleitenCustomer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleiten
Customer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleitenBlogwerk AG
 
WordPress Zurich Meetup #5: mobilesport.ch insights
WordPress Zurich Meetup #5: mobilesport.ch insightsWordPress Zurich Meetup #5: mobilesport.ch insights
WordPress Zurich Meetup #5: mobilesport.ch insightsBlogwerk AG
 
Social-Media-Nischennetzwerke
Social-Media-NischennetzwerkeSocial-Media-Nischennetzwerke
Social-Media-NischennetzwerkeBlogwerk AG
 
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk AG
 
Community Management in der Praxis
Community Management in der PraxisCommunity Management in der Praxis
Community Management in der PraxisBlogwerk AG
 
Schreiben im Web 07.06.12
Schreiben im Web 07.06.12Schreiben im Web 07.06.12
Schreiben im Web 07.06.12Blogwerk AG
 
Trends im Social Web
Trends im Social WebTrends im Social Web
Trends im Social WebBlogwerk AG
 
Schreiben im Web
Schreiben im WebSchreiben im Web
Schreiben im WebBlogwerk AG
 
Blogwerk Empfehlungsmarketing und Social Media
Blogwerk Empfehlungsmarketing und Social MediaBlogwerk Empfehlungsmarketing und Social Media
Blogwerk Empfehlungsmarketing und Social MediaBlogwerk AG
 
Blogwerk Kundenspräche in Social Media
Blogwerk Kundenspräche in Social MediaBlogwerk Kundenspräche in Social Media
Blogwerk Kundenspräche in Social MediaBlogwerk AG
 
Blogwerk CorporateBlogging 2011
Blogwerk CorporateBlogging 2011Blogwerk CorporateBlogging 2011
Blogwerk CorporateBlogging 2011Blogwerk AG
 
Blogwerk SocialCRM 2011
Blogwerk SocialCRM 2011Blogwerk SocialCRM 2011
Blogwerk SocialCRM 2011Blogwerk AG
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
Social Media for Deluxe Hotels
Social Media for Deluxe HotelsSocial Media for Deluxe Hotels
Social Media for Deluxe HotelsBlogwerk AG
 
Im Zentrum: Ihre Website im Social-Media-Zeitalter
Im Zentrum: Ihre Website im Social-Media-ZeitalterIm Zentrum: Ihre Website im Social-Media-Zeitalter
Im Zentrum: Ihre Website im Social-Media-ZeitalterBlogwerk AG
 
Küchen-Verband Schweiz – In der Praxis: Social-Media-Kanäle
Küchen-Verband Schweiz – In der Praxis: Social-Media-KanäleKüchen-Verband Schweiz – In der Praxis: Social-Media-Kanäle
Küchen-Verband Schweiz – In der Praxis: Social-Media-KanäleBlogwerk AG
 
Küchen-Verband Schweiz – Social Media im Verkauf
Küchen-Verband Schweiz – Social Media im VerkaufKüchen-Verband Schweiz – Social Media im Verkauf
Küchen-Verband Schweiz – Social Media im VerkaufBlogwerk AG
 
Küchen-Verband Schweiz – Bloggen als Kernstrategie in Social Media
Küchen-Verband Schweiz – Bloggen als Kernstrategie in Social MediaKüchen-Verband Schweiz – Bloggen als Kernstrategie in Social Media
Küchen-Verband Schweiz – Bloggen als Kernstrategie in Social MediaBlogwerk AG
 
Küchen-Verband Schweiz – Publizieren? Sich unterhalten
Küchen-Verband Schweiz – Publizieren? Sich unterhaltenKüchen-Verband Schweiz – Publizieren? Sich unterhalten
Küchen-Verband Schweiz – Publizieren? Sich unterhaltenBlogwerk AG
 

Más de Blogwerk AG (20)

Einführung Social Media 22.10.14 Frauennetz Winterthur
Einführung Social Media 22.10.14 Frauennetz WinterthurEinführung Social Media 22.10.14 Frauennetz Winterthur
Einführung Social Media 22.10.14 Frauennetz Winterthur
 
Customer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleiten
Customer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleitenCustomer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleiten
Customer Decision Journey» Kunden erfolgreich bei der Kaufentscheidung begleiten
 
WordPress Zurich Meetup #5: mobilesport.ch insights
WordPress Zurich Meetup #5: mobilesport.ch insightsWordPress Zurich Meetup #5: mobilesport.ch insights
WordPress Zurich Meetup #5: mobilesport.ch insights
 
Social-Media-Nischennetzwerke
Social-Media-NischennetzwerkeSocial-Media-Nischennetzwerke
Social-Media-Nischennetzwerke
 
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013
 
Community Management in der Praxis
Community Management in der PraxisCommunity Management in der Praxis
Community Management in der Praxis
 
Schreiben im Web 07.06.12
Schreiben im Web 07.06.12Schreiben im Web 07.06.12
Schreiben im Web 07.06.12
 
Trends im Social Web
Trends im Social WebTrends im Social Web
Trends im Social Web
 
Schreiben im Web
Schreiben im WebSchreiben im Web
Schreiben im Web
 
Blogwerk Empfehlungsmarketing und Social Media
Blogwerk Empfehlungsmarketing und Social MediaBlogwerk Empfehlungsmarketing und Social Media
Blogwerk Empfehlungsmarketing und Social Media
 
Blogwerk Kundenspräche in Social Media
Blogwerk Kundenspräche in Social MediaBlogwerk Kundenspräche in Social Media
Blogwerk Kundenspräche in Social Media
 
Blogwerk CorporateBlogging 2011
Blogwerk CorporateBlogging 2011Blogwerk CorporateBlogging 2011
Blogwerk CorporateBlogging 2011
 
Blogwerk SocialCRM 2011
Blogwerk SocialCRM 2011Blogwerk SocialCRM 2011
Blogwerk SocialCRM 2011
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
Social Media for Deluxe Hotels
Social Media for Deluxe HotelsSocial Media for Deluxe Hotels
Social Media for Deluxe Hotels
 
Im Zentrum: Ihre Website im Social-Media-Zeitalter
Im Zentrum: Ihre Website im Social-Media-ZeitalterIm Zentrum: Ihre Website im Social-Media-Zeitalter
Im Zentrum: Ihre Website im Social-Media-Zeitalter
 
Küchen-Verband Schweiz – In der Praxis: Social-Media-Kanäle
Küchen-Verband Schweiz – In der Praxis: Social-Media-KanäleKüchen-Verband Schweiz – In der Praxis: Social-Media-Kanäle
Küchen-Verband Schweiz – In der Praxis: Social-Media-Kanäle
 
Küchen-Verband Schweiz – Social Media im Verkauf
Küchen-Verband Schweiz – Social Media im VerkaufKüchen-Verband Schweiz – Social Media im Verkauf
Küchen-Verband Schweiz – Social Media im Verkauf
 
Küchen-Verband Schweiz – Bloggen als Kernstrategie in Social Media
Küchen-Verband Schweiz – Bloggen als Kernstrategie in Social MediaKüchen-Verband Schweiz – Bloggen als Kernstrategie in Social Media
Küchen-Verband Schweiz – Bloggen als Kernstrategie in Social Media
 
Küchen-Verband Schweiz – Publizieren? Sich unterhalten
Küchen-Verband Schweiz – Publizieren? Sich unterhaltenKüchen-Verband Schweiz – Publizieren? Sich unterhalten
Küchen-Verband Schweiz – Publizieren? Sich unterhalten
 

Wordpress on steroids

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