Benchmark Apache 2.2 & nginx 0.5.3 (statische Inhalte)
Dass es nicht immer Apache sein muss, stellt nginx eindrucksvoll unter Beweis. Seit mittlerweile 3 Jahren befindet sich der schlanke russische Webserver im produktiven Einsatz, und die Fanbase wächst: Im Netcraft Web Server Survey vom Juni 2008 ist der nginx mit über 2 Millionen Domains auf Platz 5 gelistet, und lässt damit seinen ärgsten Konkurrenten lighttpd hinter sich.
Grund genug, mal einen Benchmark zu machen.
Setup
Als Server dient ein AMD Opteron 148 mit 1GB Ram, Client ist ein Core 2 Duo mit 3GHz und 4GB Ram. Auf beiden Systemen kommt Ubuntu 8.04 zum Einsatz. Verbunden sind die beiden Rechner direkt über einen 100MBit Switch.
Um ein wenig Druck auf den Kessel zu bekommen, verwende ich das Apache Benchmark Tool. Pro Durchlauf feuere ich 400.000 Requests ab, jeweils 500 auf einmal:
ab -n 400000 -c 500 -g http://192.168.1.28/static_short.html
Die statische html-Datei die ich abrufe, ist 100 Byte lang. Ziemlich wenig, aber mir stehen ja auch “nur” 100MBit Bandbreite zur Verfügung.
Eine kurze Zusammenfassung in Graphen:




Die Zahlen sprechen für sich: nginx lässt den Apachen einfach stehen. Interessant waren die Beobachtungen auf der Konsole des Servers: Während im Apache-Durchlauf die Load teilweise bis auf 60(!) nach oben ging, stieg die Load beim nginx kaum über 1. Ein Grund dafür mag sein, dass der Apache mehrere Threads startet, während der nginx in der Standardkonfiguration mit nur einem Thread läuft.
Die Zahlen sind allerdings mit Vorsicht zu genießen: Bei dem Benchmark ging es lediglich um statische Inhalte. Wie die beiden Webserver sich in Verbindung mit php schlagen, werde ich demnächst ergründen.
