Mehr Leistung im WWW: Nginx statt Apache nutzen

ZDNet führt einen Kurztest durch, um die Performance-Unterschiede zu messen. Dazu werden zwei identische Amazon-EC2-High-Memory-Quadruple-Extra-Large-Instanzen mit einem Wiki aufgesetzt, um eine typische LAMP-Umgebung zu erhalten. Die großzügig dimensionierte Hardware kann dabei keinen Bottleneck darstellen. Es kommt das offizielle Image von Ubuntu-Server 11.10 (Oneiric Ocelot) 64-Bit zum Einsatz.

ZDNet verwendet MediaWiki Version 1.18.1, die Software, die auch Wikipedia nutzt. Alle sonstigen Komponenten stammen aus den Ubuntu-Repositories. Als Datenbank dient MySQL 5.1.58-1. PHP liegt in der Version 5.3.6-13 vor. Eine Instanz wird mit Apache 2.2.20 bestückt. Die zweite erhält stattdessen Nginx 1.0.5.

Für einen Performance-Test ruft ZDNet 1000 Mal die Versionsseite eines frisch installierten Wikis auf.
Für einen Performance-Test ruft ZDNet 1000 Mal die Versionsseite eines frisch installierten Wikis auf.

So lange man als einzelner User mit dem Wiki arbeitet, reagieren beide Instanzen flott und machen keine Probleme. Sobald aber mit dem Apache-Benchmarktool ab ein wenig Last simuliert wird, zeigen sich die Unterschiede. Apache wurde so konfiguriert, dass maximal 50 Prozesse geforkt werden dürfen. Nginx wurden statisch 10 Threads zugestanden.

Da Nginx anders als Apache PHP nicht durch Forking, sondern nur über FastCGI aufrufen kann, wurden PHP maximal 50 Forks erlaubt, um eine vergleichbare Konfiguration wie unter Apache zu erhalten.

Im Benchmarktest wurden immer genau 1000 Requests an die URL der Versionsseite des Wikis gestellt. Wenn dabei 100 Anfragen gleichzeitig gestellt werden, ist Apache etwas schneller als Nginx. Apache arbeitet den Benchmark in 15,904 Sekunden ab. Nginx braucht 16,822 Sekunden. Allerdings kommt Nginx mit deutlich weniger Speicher aus. htop meldet, dass während des Tests 1229 MByte vom Gesamtsystem beansprucht werden. Unter Apache sind es 1922 MByte.

Stellt man jedoch 200 simultane Requests, sieht es bereits anders aus. Die Performance von Nginx lässt kaum nach und der Benchmark endet nach 18,346 Sekunden. Apache benötigt hingegen 26,962 Sekunden und 2248 MByte Speicher. Nginx gibt sich mit 1251 MByte zufrieden.

Geht man noch einen Schritt weiter, und stellt 300 Anfragen gleichzeitig, kommt es bei beiden Servern zu Fehlern. Es werden nicht mehr alle Requests beantwortet, was aber bei der Beschränkung auf 50 Forks nicht verwunderlich ist. ab meldet im Test 11 von 1000 unbeantwortete Anfragen unter Nginx und 41 von 1000 unter Apache.

Die Benchmarkzeiten sind bei Fehlern nur noch bedingt aussagekräftig, da sich die durchschnittliche Laufzeit durch Timeouts erhöht. Nginx kam mit 18,346 Sekunden aus. Apache brauchte 49,131 Sekunden.

Bei 200 simultanen Anfragen, also dem höchsten Maß an Parallelität, das beide Server in der gewählten Konfiguration noch fehlerfrei abarbeiten können, ist Nginx 46,9 Prozent schneller, braucht aber nur 55 Prozent des Hauptspeichers. Das sind durchaus beeindruckende Zahlen.

Themenseiten: Linux, Open Source, Server, Servers, Storage, Storage & Server

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

2 Kommentare zu Mehr Leistung im WWW: Nginx statt Apache nutzen

Kommentar hinzufügen
  • Am 29. Januar 2014 um 9:18 von ph3nx

    Ändert mal eure Code-Beispiele und entfernt die HTML new line tags.

  • Am 25. Juni 2013 um 12:12 von Markus

    Eure Beispielkonfiguration in diesem Artikel ist kaputt, enthält lauter und dergleichen. Bitte reparieren, nicht das das noch jemand ausversehen ausprobiert, scheitert und meint es liegt an nginx ;)

Schreibe einen Kommentar

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