Stephan Hoyer - Performance Optimierung
-
Upload
netresearch -
Category
Documents
-
view
212 -
download
0
Transcript of Stephan Hoyer - Performance Optimierung
Netresearch GmbH & Co. KG - Nonnenstraße 11d - 04229 Leipzig - www.netresearch.de - [email protected]
am Beispiel Imperial ClothingHigh Performace eCommerce
Stephan Hoyer (Netresearch), Herr Epperlein (Internet24)
Agenda
Vorstellung
Warum ist Performance wichtig?
Fallstudie Imperial Clothing
Was man tun kann!
Imperial Clothing
• Versandhandel für Merchandise und Streetware, Tickets, Medien aus Leipzig
• 2004 gegründet
• Mehr als 80.000 Kunden weltweit
• Hauptsächlich Versand nach Deutschland, UK, Östereich, Frankreich
• Seit 2009 mit Magento Community Edition (vorher osCommerce)
Internet24
• Unternehmen:
– Seit 1997 Betreuung von ausschließlich Geschäftskunden (u.a. MyToys, EMP, SevenOneMedia, Melitta)
– zertifiziertes Technikteam mit direkten Ansprechpartnern
• Kernkompetenzen:
– Bereitstellung von dedizierten Managed- und Rootservern, virtuellen Servern und Webhostingtarifen
– Konzeption, Realisierung und Betreuung von individuellen Serverlösungen (Loadbalancing-Cluster, HA-Lösungen)
Netresearch
• Unternehmen– Inhabergeführte Agentur seit 1998– Magento Enterprise Partner– Ausrichter „Meet Magento“
• Geschäftsbereiche– Magento, Typo3, Zend Framework
• Kunden– z.B. AIDA, Falke, Sixt
Warum ist Performance wichtig?
User Experiance
• Durchschnittlicher Kunde erwartet Ladezeit von weniger als 2 Sekunden
• Bei mehr als 3 Sekunden verlassen viele bereits die Seite
• Ladezeiten stehen in direktem Zusammenhang zur Kundentreue
• Geschwindigkeit ist neben Benutzerfreundlichkeit und Produkten das wichtigste Kundenkriterium
Suchmaschinenbewertung
• Google bewertet Ladezeit beim Pagerank
• Gute Ladezeiten führen nicht zu gutem Pagerank
• Schlechte Ladezeiten können sich jedoch negativ auswirken
Fallstudie Imperial Clothing
Eckdaten
• 10.000 konfigurierbare Produkte
• 30.000 einfache Produkte
• 3 Stores, 9 Storeviews
• 80 Marken, über 300 Bands
• Produktdaten und Bestellungen werden (noch) im Magentobackend gepflegt
Serverarchitektur
Applikationsserver
• 2 x Intel Xeon Quad-Core 2.5 GHz (8 Cores)
• 16 GB RAM
• SATA-Subsystem RAID1
• Betriebssystem: CentOS 5.5
• Apache HTTPd: Version 5.2, Fast-CGI
Datenbankserver
• Intel Xeon Dual-Core 3 GHz
• 8 GB RAM
• Betriebssystem: CentOS 5.5
• Mysql: Version 5.0
• Verbindung zum Applicationserver über GBit-LAN
Konfiguration Magento
• Flat Catalog
• Einsatz einer von Netresearch angepassten Version des Catalog-Cache-Moduls
• Genaue Untersuchung aller Seiten nach cachebaren Inhalten
• Optimierung aller Bildgrößen
Konfiguration DB-Server
• Viel RAM, dadurch großer Page-Cache
• DB-Server hat viele lesende und schreibende Zugriffe– InnoDB ist sehr Systemlastig– innodb_buffer_pool_size umfasst die gesamte
DB, großer query cache
Konfiguration Webserver
• Webserver hat kaum schreibende Plattenzugriffe– Fast-CGI, Keepalive– hohe MaxRequestsPerProces, OutputBufferSize
und MinProcessesPerClass– cache-Verzeichnisse im Arbeitsspeicher– mod_deflate
• PHP Bytecache: APC
Resultat
• Schneller Seitenaufbau – Startseite: <1 Sekunde*– Kategorieseite (inkl Layered Navigation):
<1 Sekunde*– Produktdetailseite: 1-2 Sekunden*
• Mehr als 300 gleichzeitige Besucher sind möglich
* Nur HTML/CSS/JS, keine Bilder
In Zahlen
• Ca. 5 Mio Seitenaufrufe pro Monat
• 150.000 Besucher pro Monat
• Durchschnittlich 10 Produktbilder pro Seite
• Load ist selten über 8
• Traffic: TODO
Geplante Erweiterungen
• Verwendung eines separaten Mediaservers– Weniger Overhead beim Ausliefern von
statischen Inhalten (Bilder/CSS/JS)– Keine Cookieübertragung bei Bildern– Auslieferung von lokal nahen Servern (CDN)
• Mehrere Applikations-Server mit Loadbalancer
• Mehrere Datenbank-Server mit Replikation
Wie kann ich die Geschwindigkeit
meines Shops verbessern
Konfiguration Magento
• Konfiguration im Admin– Aktivierung Cache– Aktivierung Flat Catalog
• Module– Fooman Speedster-Modul (kostenlos)
• Modul komprimiert JS/CSS Dateien
– Netresearch Catalog-Cache-Modul (kostenlos)• Modul aktiviert Caching auf Produktdetailseite und
Produktliste
Serverkonfiguration
• var-Verzeichnis auf Ramdisk legen
• Gzip aktivieren
• Mysql/Apache-Konfig anpassen– TODO
Mehr Infos gibt’s im Netz
• Linksammlunghttp://is.gd/cvMt0
Performancekiller finden
• Nutzung des Profilers– Aktivierung im Admin
• Konfiguration->Entwickleroptionen->Debug->Profiler
– Aktivierung in der index.php• Varien_Profiler::enable(); einkommentieren
Beispiel Produktdetailseite
… weiter unten
Lösung: Caching
• Auf welcher Ebene– Seite– Block– Model
• Wovon ist der Cache abhängig– Storeview– Kundengruppe– Produkt– ...
Beispiel Blockcache
• Es müssen drei Funktionen in der Blockklasse implementiert werden– public function getCacheLifetime()– public function getCacheKey()– public function getCacheTags()
• ACHTUNG: Erstellen des Cachekeys darf nicht aufwändiger sein als das Erstellen des zu cachenden Inhalts
Bildquellen
• http://www.core77.com/blog/events/to_do_7016.asp
• http://kochsiek.org/blog/tag/geschwindigkeitsbegrenzung/
• http://www.flexen.dk/ffl/gallery.htm
• http://s253.photobucket.com/albums/hh80/osijek30/?action=view¤t=waiting.jpg
• http://commons.wikimedia.org/wiki/File:Zuse-Z4-Totale_deutsches-museum.jpg
• http://www.flickr.com/photos/mkorchia/2360147239/sizes/o/
• http://www.flickr.com/photos/eclogite/547557006/sizes/l/
• http://www.flickr.com/photos/radiorover/363751195/
Für Ihre AufmerksamkeitDanke
Fragen