Magento Benchmarking und Tuning Teil 3

Nachdem es in Teil 1 und Teil 2 mehr um Fragen der Hardware und der richtigen Konfiguration des LAMP-Gespannes ging, handelt der 3. Teil direkt vom Magento-System. Zunächst soll ein Update von 1.2 nach 1.3 zeigen ob sich was im Core getan hat und dann habe ich noch eine Extension getestet die eine kürzere Übertragung der Seiten vom Server zum Browser verspricht.

Rückblick

Der Einsatz eines aktuellen Rootservers sowie die Installation von APC und Konfiguration von MySQL ergaben zuletzt eine Performance von 6,74 Requests pro Sekunde auf eine Artikelseite. Weitere versuchen mit TMPFS im Bereich des Cache-Verzeichnisses von Magento ergaben keine Verbesserungen.

Update

Vor dem Update von 1.2.1.2 auf 1.3.2.1 habe ich noch mal die aktuelle Performance gemessen. Da der Webserver inzwischen nicht mehr nur alleine für den Vitalityshop zuständig ist, ist die Leistung wie erwartet etwas geringer geworden.

ab2 -c 5 -n 100 http://www.vitalityshop.de/blue-lagoon-mineral-foaming-cleanser.html

Concurrency Level:      5
Time taken for tests:   15.755 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      2704100 bytes
HTML transferred:       2659400 bytes
Requests per second:    6.35 [#/sec] (mean)
Time per request:       787.747 [ms] (mean)
Time per request:       157.549 [ms] (mean, across all concurrent requests)
Transfer rate:          167.61 [Kbytes/sec] received

Concurrency Level:      5
Time taken for tests:   15.755 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      2704100 bytes
HTML transferred:       2659400 bytes
Requests per second:    6.35 [#/sec] (mean)
Time per request:       787.747 [ms] (mean)
Time per request:       157.549 [ms] (mean, across all concurrent requests)
Transfer rate:          167.61 [Kbytes/sec] received

Der neue Startwert für Vergleiche ist also 6,35 Requests pro Sekunde. Nach dem Update auf die Version 1.2.3.1 und Neuerstellung sämtlicher Caches und Indexe ergab die neue Messung 7.80 Requestst pro Sekunde.

Wow, da bin ich doch tatsächlich beeindruckt. In den Releasenotes stand zwar etwas von Perfomance-Steigerung. Aber das steht da ja eigentlich immer. Das es aber 23% werden, das hatte ich nicht erwartet. Glückwunsch Varien!

Cache Layered Navigation

Es gibt in der Cache-Verwaltung einen Schalter um Caching für Layered Navigation zu aktivieren. Die Funktion ist noch Beta und sollte zunächst gründlich getestet werden, bevor man sie bei seinem Shop einsetzt. Ein kurzer Test ergab bei meinem Shop keine Änderung. Laut Beschreibung soll das aber auch nur für umfangreiche Kataloge nützlich sein. Ich habe das wieder deaktiviert.

Minify und Fooman Speedster

Minify ist ein PHP-Script um die Anzahl und Menge der Daten einer Seite zur reduzieren, die vom Webserver zum Browser geschickt werden müssen. Das wird durch Zusamenfassung, Komprimierung und speziellen HTTP-Headern erreicht. Als Ergebnis sollte eine komplette Seite im Browser schneller geladen werden.

Minify ist zwar ein Serverscript, die Performance-Steigerung ergibt sich hier aber nicht durch eine schnellere Seitenerstellung auf dem Server, sondern durch kürzere Übertragung der Daten zwischen Webserver und Browser. Für Magento gibt es die Extension Fooman Speedster die Minify einsetzt.

Um die Wirkung des Scripts prüfen zu können muss die Messung also im Browser stattfinden. Ich nehme dazu YSlow. Hier zunächst die Ergebnisse ohne Fooman Speedster:

Statistik vorher

Man sieht hier sehr deutlich das der eigentliche HTML-Anteil mit 26,7 KByte im Vergleich zu den anderen Bereichen sehr klein ist. Die JavaScript- und CSS-Dateien belegen zusammen 375,2 KByte von insgesamt 459.0 KByte für den kompletten Request. Dieses Packet muss für jeden neuen Besucher zunächst mal zum Browser übertragen werden. Nach dem Erstkontakt sollte dann (hoffentlich) das Caching des Browsers greifen und es wird nur noch der HTML-Teil der Seiten geladen. In diesem Beispiel also die 26,7 KByte für den HTML-Teil. Es werden aber trotzdem noch bei jedem Request 31 Anfragen zum Server übertragen.

Mit Fooman Speedster zeigt sich dann folgenden Bild:

Statistik nachher

Die gesamte Übertragungsgröße für die erste Seite  ist von 459,0 KByte auf 170,5 KByte geschrumpft. Bei der gecachten Seite sind nun 7 Requests pro Seite weniger notwendig. Und die Generierung der Seiten auf dem Server dauert auch nicht länger. Ich kann den Einsatz der Extension also nur empfehlen. Es ist nach der Installation lediglich ein Eintrag in der .htaccess vorzunehmen und das Verzeichnis var/minifycache muss Schreibrechte haben.

Fazit

Mit der Version 1.3 von Magento ist Varien ein großer Performance-Sprung gelungen. Bei meinem Shop brachte das Update eine 23% Steigerung im Vergleich zu 1.2.

Mit der einfach zu installierenden Extension Fooman Speedster kann man die Dauer zur Anzeige der ersten Seite für Neukunden deutlich verkürzen. Und schließlich ist der erste Eindruck ja sehr wichtig.

Wie immer würde ich mich über Feedback freuen und zwar nicht nur per E-Mail sondern auch direkt hier im Block 😉

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: