Stephan Hoyer - Performance Optimierung

35
Netresearch GmbH & Co. KG - Nonnenstraße 11d - 04229 Leipzig - www.netresearch.de - [email protected] am Beispiel Imperial Clothing High Performace eCommerce Stephan Hoyer (Netresearch), Herr Epperlein (Inter

Transcript of Stephan Hoyer - Performance Optimierung

Page 1: 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)

Page 2: Stephan Hoyer - Performance Optimierung

Agenda

Page 3: Stephan Hoyer - Performance Optimierung

Vorstellung

Page 4: Stephan Hoyer - Performance Optimierung

Warum ist Performance wichtig?

Page 5: Stephan Hoyer - Performance Optimierung

Fallstudie Imperial Clothing

Page 6: Stephan Hoyer - Performance Optimierung

Was man tun kann!

Page 7: Stephan Hoyer - Performance Optimierung

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)

Page 8: Stephan Hoyer - Performance Optimierung

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)

Page 9: Stephan Hoyer - Performance Optimierung

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

Page 10: Stephan Hoyer - Performance Optimierung

Warum ist Performance wichtig?

Page 11: Stephan Hoyer - Performance Optimierung

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

Page 12: Stephan Hoyer - Performance Optimierung

Suchmaschinenbewertung

• Google bewertet Ladezeit beim Pagerank

• Gute Ladezeiten führen nicht zu gutem Pagerank

• Schlechte Ladezeiten können sich jedoch negativ auswirken

Page 13: Stephan Hoyer - Performance Optimierung

Fallstudie Imperial Clothing

Page 14: Stephan Hoyer - Performance Optimierung

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

Page 15: Stephan Hoyer - Performance Optimierung

Serverarchitektur

Page 16: Stephan Hoyer - Performance Optimierung

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

Page 17: Stephan Hoyer - Performance Optimierung

Datenbankserver

• Intel Xeon Dual-Core 3 GHz

• 8 GB RAM

• Betriebssystem: CentOS 5.5

• Mysql: Version 5.0

• Verbindung zum Applicationserver über GBit-LAN

Page 18: Stephan Hoyer - Performance Optimierung

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

Page 19: Stephan Hoyer - Performance Optimierung

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

Page 20: Stephan Hoyer - Performance Optimierung

Konfiguration Webserver

• Webserver hat kaum schreibende Plattenzugriffe– Fast-CGI, Keepalive– hohe MaxRequestsPerProces, OutputBufferSize

und MinProcessesPerClass– cache-Verzeichnisse im Arbeitsspeicher– mod_deflate

• PHP Bytecache: APC

Page 21: Stephan Hoyer - Performance Optimierung

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

Page 22: Stephan Hoyer - Performance Optimierung

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

Page 23: Stephan Hoyer - Performance Optimierung

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

Page 24: Stephan Hoyer - Performance Optimierung

Wie kann ich die Geschwindigkeit

meines Shops verbessern

Page 25: Stephan Hoyer - Performance Optimierung

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

Page 26: Stephan Hoyer - Performance Optimierung

Serverkonfiguration

• var-Verzeichnis auf Ramdisk legen

• Gzip aktivieren

• Mysql/Apache-Konfig anpassen– TODO

Page 27: Stephan Hoyer - Performance Optimierung

Mehr Infos gibt’s im Netz

• Linksammlunghttp://is.gd/cvMt0

Page 28: Stephan Hoyer - Performance Optimierung

Performancekiller finden

• Nutzung des Profilers– Aktivierung im Admin

• Konfiguration->Entwickleroptionen->Debug->Profiler

– Aktivierung in der index.php• Varien_Profiler::enable(); einkommentieren

Page 29: Stephan Hoyer - Performance Optimierung

Beispiel Produktdetailseite

Page 30: Stephan Hoyer - Performance Optimierung

… weiter unten

Page 31: Stephan Hoyer - Performance Optimierung

Lösung: Caching

• Auf welcher Ebene– Seite– Block– Model

• Wovon ist der Cache abhängig– Storeview– Kundengruppe– Produkt– ...

Page 32: Stephan Hoyer - Performance Optimierung

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

Page 33: Stephan Hoyer - Performance Optimierung

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&current=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/

Page 34: Stephan Hoyer - Performance Optimierung

Für Ihre AufmerksamkeitDanke

Page 35: Stephan Hoyer - Performance Optimierung

Fragen