Performance von Shopware mit Apache2 und NGINX im Vergleich

Da man wiederholt Beiträge über NGINX als Webserver für Shopware liest, habe ich mir gedacht, dass eine Gegenüberstellung von Apache2 und NGINX mit Shopware doch ganz interessant wäre…

Setup

Shopware

Version 5.2.24
6 Subshops
ca. 50.000 Artikel
15 interne Plugins
10 externe Plugins

Der getestete Subshop hat ca. 500 Kategorien und 6.000 Produkte. Vor dem Test wurden alle Caches geleert und die Webserver neu gestartet. Der HTTP Cache wurde deaktiviert und initial jeweils ein Produkt, Kategorie und Startseite aufgerufen.

Für den Test wurde jeweils eine bestimmte Kategorie aufgerufen (mit mehrfachen Threads/Usern)

 

Server / Testumgebung

Ubuntu 16.04
Intel(R) Core(TM) i7-4790
16 GB RAM
256GB Intel SSD

Webserver

nginx version: nginx/1.10.1 (Ubuntu)
Server version: Apache/2.4.18 (Ubuntu)

PHP

Version 7.0.20
NGINX: FastCGI
Apache: mod_php

Request Handler

Um die Aufrufe mit untersch. Anzahl an Threads abzusenden, habe ich JMeter genutzt. In unserem Fall mit:

200 Threads
20 Sekunden

Mach durchschnittlich 600rpm, was schon ganz ordentlich ist.

Erster Test

NGINX

Der NGINX hat eine durchschnittliche Latency von 16618ms und eine Fehlerquote von 0. Das heißt alle Requests wurden erfolgreich verarbeitet, gebraucht hat er dafür 52 Sekunden.

phpinfo()

CPU Last

Apache (mod_php)

Der Apache Webserver mit mod_php hatte hier etwas zu kämpfen, nicht nur wurde die CPU extrem beansprucht, sonder warfen von 200 Requests auch 78 einen 500 Error. Abzüglich dieser Errors ergab sich eine durchschnittliche Antwortzeit von 12898ms.

phpinfo()

CPU Last

Apache (FPM)

Der Apache mit mit FastCGI hat wie erwartet mittelmäßig abgeschnitten – zwar hatte er knapp 60% weniger 500 Errors als der Apache mit mod_php – allerdings sind 26 500er immer noch etwas zu viel. Mit eine Latency von 17336ms im Schnitt brauch er etwas länger als der NGINX.

phpinfo()

CPU Last

 

Fazit

Der NGINX scheint mir, gerade bei vielen Aufrufen, klar die Nase vorn zu haben. Besonders nach dem Cache leeren oder noch nicht aufgewärmten Caches erledigt er hier seine Arbeit wesentlich effizienter.

Wer einen kleinen Shop mit wenig hundert Requests pro Tag hat, kann weiterhin auf den guten alten Apache mit mod_php setzen, diesen bieten die meisten Hoster Standardmäßig an und er ist in den meisten Fällen etwas leichter zu handhaben (.htaccess etc.).

Sobald es allerdings in Richtung von +50.000 Seitenaufrufen pro Tag geht, empfehle ich klar den NGINX oder wenigstens den Apache mit FPM.  Im obigen Test hat der NGINX 200 Req. in 20 Sekunden ohne Probleme abgearbeitet – das sind umgerechnet 864.000 Requests pro Tag. Das ist schon eine ordentliche Menge und reicht für die meisten Shopware Setups aus.

2 Antworten auf „Performance von Shopware mit Apache2 und NGINX im Vergleich“

  1. Hi Micha,

    ich bin von Apache2 auf Nginx umgestiegen und bereue den Umstieg absolut nicht. Die Ladezeit meiner einzelnen Seiten hat sich deutlich verbessert. Auch die pingdoom tools bestätigten mir das. Ich hatte mit dem Apache2 eine Ladezeit von 500ms, dass ist nicht schlecht. Aber mit Nginx waren es sofort nach der Installation 350ms und jetzt mit Optimierungen, sind es nur noch ca 200ms. Ein spitzen Wert. Ich glaube ein großer Vorteil von Nginx gegenüber Apache2 ist, dass Nginx kein htaccess nutzt.

    Grüße
    Dennis

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert