Donnerstag, den 08. März 2012 23:28 Alter: 6 Monat(e)
Kategorie: Messungen
Submitting your vote...
Rating: 3.5 von 5. 2 Stimme(n).
Artikel bewerten.

TYPO3 auf Nginx (fast-cgi) oder Apache2 (mod-php)

Nginx gilt weithin als schlanker und hochperformanter Webserver, Apache ist zweifelsfrei der Platzhirsch unter den (OpenSource) Webservern. Welches System bietet mehr Performance für eine TYPO3-Webseite?


Schema des Testsetups

Schon vor einiger Zeit hatte ich mal für eine Firmenwebseite einen kurzen Vergleichstest zwischen Nginx und Apache2 angestellt:
http://foobar.lamp-solutions.de/howtos/server-administration/server-tuning/2979/


Da ich für den Betrieb von typo3.lygie.de die kleinste virtuelle Linux-Instanz von Host-Europe, mit gerade mal 1 GB RAM und ungewisser Versorgung mit CPU-Ressourcen angemietet habe, hat mich aus konkretem Anlass interessiert, welches System für meine Seite besser geeignet sei.

Als Testumgebung habe ich die beiden Webserver hinter einen Varnish gehängt, der alle Anfragen ohne zu cachen nach hinten durchgereicht. Abgesehen von einigen vorsichtigen Referenzmessungen habe ich die Testläufe nicht auf das Live-System losgelassen, da ich mir nicht sicher bin wie es dem Provider gefällt, wenn die virtuellen Maschinen für Lasttests über längere Zeiträume an die Leistungsgrenzen gebracht werden.

1) Seiten-Ladezeit

Zuerst hat mich interessiert, was für alle Besucher der Seite am spannendsten ist, nämlich wie schnell eine Seite im Browser lädt. Für diesen Zweck habe ich in zahlreichen Testdurchläufen

  1. Den lokalen Cache von Google-Chrome geleert
  2. Den Cache von TYPO3 geleert
  3. Die Seitenladezeit in den Entwicklertools des Browsers ausgewertet.


Der Screenshot zeigt beispielhaft einen Testdurchlauf auf das Live-System unter Nginx


Ergebnis: Einen signifikanten Einfluss des Webservers Nginx oder Apache2 auf die Ladezeit der Seite konnte ich nicht feststellen

2) Lasttest mit ab-Benchmark und siege

Um die beiden Webserver auch unter hoher Last zu vergleichen habe ich das schon bekannte siege-Script und den ab-Benchmark auf beide Systeme losgelassen. Wie auch die Grafiken zeigen, konnte ich auch hier keine relevanten Unterschiede zwischen den Systemen feststellen:

  1. bei der durchschnittlichen Ladezeit lagen beide gleich auf
  2. der Apache musste reproduzierbar einige einzelne Ausreißer nach oben zulassen, die aber gerade mal um 20ms höher als die Spitzen beim Nginx lagen und keinen Einfluss auf das Gesamtergebnis hatten
  3. beide Systeme liefen mit 512 MB RAM bis zu knapp über 30 gleichzeitige Anfragen stabil (siehe auch RAM-Verbrauch)

3) RAM-Verbrauch

Im Internet wird häufig der geringere Ressourcen- und RAM-Verbrauch vom Nginx gegenüber dem
Apache herausgestellt. Tatsächlich bescheinigen ps und pmap der Kombination aus fastcgi und nginx im Ruhezustand einen deutlich geringeren Ramverbrauch als dem Apachen.
Was bedeutet das aber in der Praxis?
Um der Frage auf dem Grund zu gehen, habe ich  getestet, bei wie vielen gleichzeitigen Anfragen ein System mit 512 MB Ram anfangen würde zu swapen.
Wenn ich beim Apache-Benchmark, oder siege schrittweise die Anzahl der gleichzeitigen Anfragen gesteigert habe, war das Bild unter Nginx und Apache  das gleiche.
Zwischen 30 und 35 gleichzeitigen Anfragen war der RAM voll und der SWAP-Speicher fing an gefüllt zu werden.

4 )Vergleich bei statischem Filecaching

Die bisherigen Ergebnisse zeigen, dass wenn der PHP-Interpreter ein so komplexes Framework wie TYPO3 parsen muss, tritt (trotz aktiviertem opcode-Caching durch APC) die Aufgabe des Webservers die Daten auszuliefern in den Hintergrund. Um den Webservern mal die Chance zu geben ohne diesen Klotz am Bein ihre Leistung unter Beweis zu stellen, habe ich die gleichen Tests mal auf statische Dateien (wie sie zum Beispiel durch dir Erweiterung ncstaticfilecache bereit gestellt werden) losgelassen.
Bei diesem Test konnte sich der Nginx das erste mal deutlich vom Apachen absetzen:

  1. Server Software:        Apache/2.2.14
  2. Server Hostname:        typo3.lygie.de
  3. Server Port:            80
  4.  
  5. Document Path:          /
  6. Document Length:        5 bytes
  7.  
  8. Concurrency Level:      30
  9. Time taken for tests:   9.875 seconds
  10. Complete requests:      10000
  11. Failed requests:        0
  12. Write errors:           0
  13. Total transferred:      4540000 bytes
  14. HTML transferred:       50000 bytes
  15. Requests per second:    1012.63 [#/sec] (mean)
  16. Time per request:       29.626 [ms] (mean)
  17. Time per request:       0.988 [ms] (mean, across all concurrent requests)
  18. Transfer rate:          448.96 [Kbytes/sec] received

 
 
  1. Server Software:        nginx/0.7.65
  2. Server Hostname:        typo3.lygie.de
  3. Server Port:            80
  4.  
  5. Document Path:          /index.html
  6. Document Length:        5 bytes
  7.  
  8. Concurrency Level:      30
  9. Time taken for tests:   7.431 seconds
  10. Complete requests:      10000
  11. Failed requests:        0
  12. Write errors:           0
  13. Total transferred:      3630000 bytes
  14. HTML transferred:       50000 bytes
  15. Requests per second:    1345.68 [#/sec] (mean)
  16. Time per request:       22.294 [ms] (mean)
  17. Time per request:       0.743 [ms] (mean, across all concurrent requests)
  18. Transfer rate:          477.03 [Kbytes/sec] received
  19.  
  20. Connection Times (ms)
  21.               min  mean[+/-sd] median   max
  22. Connect:        0    4  10.3      3     255
  23. Processing:     1   18  22.3     12     261
  24. Waiting:        1   18  22.2     12     261
  25. Total:          1   22  24.4     15     268

Fazit:

In den meisten Szenarien dürfte es auf der Performance einer TYPO3-Webseite kaum einen Einfluss haben, ob auf dem Setup der Nginx oder der Apache zum Einsatz kommt. Der ca. 30% höhere Durchsatz bei statischen Dateien dürfte in der Praxis selten zum Tragen kommen. Wer statisches Filecaching einsetzten kann, hat normal auch die Möglichkeiten serverseitig durch einen Dienst wie den Varnish zu cachen.
Gerade die Erweiterung ncstaticfilecache zeigt auch einen großen Vorteil des Apache-Webservers. Alle Beispielkonfigurationen in der Anleitung der Erweiterung sind auf den Apache zugeschnitten.

Die Seite typo3.lygie.de wird vorerst auf der Kombination Varnish + Nginx + fastcgi laufen. Die Entscheidung für nginx ist dabei aber eher aus dem Bauch getroffen.


keine Kommentare
Kommentar schreiben

* Bitte ausfüllen

*

*