Sie sind auf Seite 1von 35

High Performace eCommerce

am Beispiel Imperial Clothing

Stephan Hoyer (Netresearch), Herr Epperlein (Internet24)

Netresearch GmbH & Co. KG - Nonnenstraße 11d - 04229 Leipzig - www.netresearch.de - Info@netresearch.de
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
• Linksammlung
http://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&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/
Danke
Für Ihre Aufmerksamkeit
Fragen

Das könnte Ihnen auch gefallen