Magento Benchmarking und Tuning Teil 2

Nachdem in der vergangene Woche alle Versuche  einen 2 Jahre alten Rootserver mit Magento performant zu betreiben nicht zufriedenstellend verliefen, habe ich nun einen ganz frischen Server bestellt. Diesmal sollte es von Anfang an richtig geplant sein. Also keine unnötigen Dienste wie SMTP, FTP usw. Zunächst auch keine anderen Webseiten die den Betrieb irgendwie stören könnten. Und schon gar kein Plesk, Confixx oder andere Verwaltungsprogramme.

Bei dem Rootserver handelt es sich um einen AMD Athlon 64 X2 5600+ Dual Core mit 4 GB DDR2 Arbeitsspeicher und 2 x 400 GB SATA II die als Software RAID 1 betrieben werden. Also auch keine übertriebene Monstermaschine sondern guter Durchschnitt.

Als Ausgang dient ein minimales OpenSuSE 11.1 Grundsystem. Apache 2.2.10 und MySQL 5.0.67 habe ich mit dem Paketmanager nachinstalliert. Das PHP 5.2.9 habe ich von Hand mit folgenden Einstellung kompiliert.

./configure –prefix=/usr/local/src/php-5.2.9 –with-mysql –with-mysqli –with-pdo-mysql –with-freetype-dir –with-png-dir –with-jpeg-dir –enable-exif –with-zlib –with-gd –enable-gd-native-ttf –enable-mbstring –with-curl –with-imap-ssl –with-gettext –enable-soap –with-apxs2=/usr/sbin/apxs2-prefork –with-libdir=lib64

Den ganzen Vitalityshop habe ich dann vom alten Server auf den neuen geholt und den ersten Test ohne irgendwelche Optimierungen gestartet.

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

Benchmarking www.vitalityshop.de (be patient)…..done

Server Software:        Apache/2.2.10
Server Hostname:        78.46.91.138
Server Port:            80

Document Path:          /blue-lagoon-mineral-foaming-cleanser.html
Document Length:        22834 bytes

Concurrency Level:      5
Time taken for tests:   27.317 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      2327400 bytes
HTML transferred:       2283400 bytes
Requests per second:    3.66 [#/sec] (mean)
Time per request:       1365.826 [ms] (mean)
Time per request:       273.165 [ms] (mean, across all concurrent requests)
Transfer rate:          83.20 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3  15.7      0      97
Processing:   801 1351 174.4   1362    1686
Waiting:      772 1271 170.1   1288    1600
Total:        801 1354 175.5   1364    1686

3,66 Requests pro Sekunde ohne Optimierungen sind hier schon mal besser als die 2,1 mit Optimierungen auf derm alten Server. Nun habe ich nach und nach die gleichen Änderungen wie im ersten Teil vorgenommen.

APC

Da ich das PHP manuell erstellt habe, wollte ich auch nicht den Alternative PHP Cache (APC) vom Paketmanager nehmen. Wenn alles richtig eingerichtet ist, sollte ein pecl install apc das benötigte Paket vom PECL-Repository laden und installieren. Dann noch folgende Zeilen in der php.ini:

[APC]
extension=apc.so
apc.rfc1867 = on
apc.shm_size = 100 ; = MB / Sollte nach ein paar Tagen mit APC Info überprüft und angepasst werden
apc.stat = 0 ; Achtung: Diese Einstellung nur auf Produktiv-Servern benutzen. Nach einem Update unbedingt Apache neu starten!!!

Ein Apache Neustart und die Grundinstallation von APC ist fertig. Ein Blick auf die Performance ergibt eine Steigerung um 56%:

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

Benchmarking www.vitalityshop.de (be patient)…..done

Server Software:        Apache/2.2.10
Server Hostname:        78.46.91.138
Server Port:            80

Document Path:          /blue-lagoon-mineral-foaming-cleanser.html
Document Length:        22834 bytes

Concurrency Level:      5
Time taken for tests:   17.499 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      2327300 bytes
HTML transferred:       2283300 bytes
Requests per second:    5.71 [#/sec] (mean)
Time per request:       874.959 [ms] (mean)
Time per request:       174.992 [ms] (mean, across all concurrent requests)
Transfer rate:          129.88 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2  12.5      0      82
Processing:   520  865 160.8    857    2060
Waiting:      487  832 158.6    829    2039
Total:        520  867 167.8    862    2142

Die aktivierung des Daten Caching in Magento (siehe Teil 1) erbrachte eine weitere Steigerung um 7,7%  auf 6,15 Requests pro Sekunde.

MySQL

Hier habe ich zunächst nur den Query-Cache von MySQL aktiviert. Das Ergebnis ist eine weitere Steigerung um 9.6% auf 6,74 Requests pro Sekunde. Die weiteren Einstellungen von MySQL werde ich erst anpassen wenn der Shop ein paar Wochen auf dem neuen Server gelaufen ist.

Fazit

Im Vergleich zu einer Standard-Installation brachte die Installation von APC und der Aktivierung des Query Cache von MySQL eine Steigerung um 84,1% von 3,66 auf 6,74 Requests pro Sekunde. Die Verbesserung kann man beim Klicken durch den Vitalityshop auch merken.

Was noch bleibt sind diverse Einstellungsmöglichkeiten des Apache und Versuche mit dem Einsatz von TMPFS für ausgewählte Verzeichnisse. Es bleibt also noch genug Stoff für einen 3. Teil.

2 Responses to Magento Benchmarking und Tuning Teil 2

  1. […] 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. […]

  2. benjamin sagt:

    Danke ich hab mir mal dein Bericht durchgelesen. Und die änderung gemacht. Magento läuft jetzt im turbo modus danke. Ich hab ein Intel i7 root server debian 64bit.

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: