• 100% unabhängig
  • 100% kostenlos
Nginx oder Apache – Welcher Webserverver für welchen Bereich?

Nginx oder Apache – Welcher Webserverver für welchen Bereich?

Keine Kommentare

Die ganz Großen der Branche wie Facebook, Intel und auch Sourceforge gehen neue Wege, alle haben auf nginx umgestellt. Diese Nutzer sind mit Apache nicht mehr so ganz zufrieden die Performance ist nicht mehr ausreichend. Aber nicht nur grosse Webportale springen ab, diese Tendenz ist auch bei kleineren Unternehmen zu beobachten. In diesem Artikel wollen wir Apache und nginx etwas genauer durchleuchten und die Unterschiede finden.

 

Unterschiede in der Performance: Apache – Nginx

User berichten, Apache wäre im Bezug auf die Performance etwas schwach auf der Brust, die Ursache läge darin, dass ein grosser Teil davon schon selbst verbraucht wird. Die Struktur und der ganze Aufbau sollen Apache zu einem langsamen Brenner machen, er kann mit andern Webservern nicht mehr mithalten. So sind Verzögerungen festzustellen die sich besonders auswirken:

  • Beim Austausch statistischer Daten wie Bilder.
  • Wenn viele Anfragen gleichzeitig eintreffen.

Die dynamischen PHP Dateien werden beim Aufruf der User noch relativ schnell geladen, bei Bildern und anderen statischen Dateien tut sich der Server jedoch etwas schwer, es dauert vergleichsweise lange, es fehlt an Performance.

 

Der Test bringt den direkten Vergleich

Bei Apache wird jede einzelne Anfrage als eigenständiger Arbeitsprozess abgehandelt der alle integrierten Module mit einbezieht, ganz unabhängig davon um was für eine Anfrage es sich handelt. Dass dieser Prozess Rechnerleistung beansprucht versteht sich von selbst, was sich dann in fehlender Performance deutlich bemerkbar macht. Fatal ist, das PHP Modul wir bei jeder Anfrage gefordert, egal ob es sich lediglich um eine Textdatei handelt oder auch Bilder gewünscht sind. Jede Anfrage wird somit mit mindestens 25MB belastet, was bei etwas schwächeren Servern zu viel sein kann.

Andere Wege beschreitet nginx. Eine Anfrage ist eine eigenständige Anfrage und löst nicht gleich die ganzen Rechnermodule aus. Es wird nur aufgerufen was auch wirklich notwendig ist um die Anfrage zu behandeln, so reagieren einzelne Prozesse und Threads dann auch nur dann wenn sie wirklich benötigt werden, dies trägt dazu bei Ressourcen zu sparen. Das kann bedeuten, dass Nginx mit 25MB stattliche 100000 Anfragen in http bearbeiten könnte. Ein weiterer Unterschied besteht auch darin, dass Apache für jede einzelne Anfrage einen Arbeitsprozess auslöst wobei bei nginx die Anfrage in eine Warteschlange eingereiht wird, dies verhindert den Slashdot Effekt.

 

Ist nginx in Punkto Leistung Apache überlegen?

Um diese Frage verbindlich zu klären wurden umfangreiche Tests gemacht. Insgesamt wurden jeweils 10000 Anfragen an die beiden Server gemacht, wobei nie mehr als 1000 Anfragen gleichzeitig stattfanden. Der Webserver von Apache musste nach rund 4400 Anfragen kapitulieren, er war ganz einfach überfordert, sein Kontrahent von nginx konnte diese 10000 Anfragen augenscheinlich locker verarbeiten. Daraus lässt sich ein Leistungsverhältis von 10:1 zu Gunsten von nginx ableiten, was doch recht beeindruckend ist.

 

Auch bei den HTACCESS Dateien kann Apache nicht mithalten

Bei Anfragen von spezifischen Dateien durchforstet Apache sämtliche Verzeichnisse. Liegt die gesuchte Datei ganz oben geht dies auch noch relativ fix, muss jedoch alles durchsucht werden dauert dies seine Zeit. Es muss viel Rechnerleistung bereitgestellt werden, die anderweitig fehlt was sich dann negativ auf die Performance auswirkt.

Auch hier hat sich nginx andere Lösungen einfallen lassen. Um schneller die gewünschten Dateien ausfindig zu machen, ist die Config-Datei bereits im Arbeitsspeicher zu finden. So entfällt die komplette Durchforstung der Unterverzeichnisse. Ist die entsprechende Config-Datei im Arbeitsspeicher gefunden kann die Seite dann im Unterverzeichniss entsprechend schnell gefunden werden. Über einen htaccess – Konverter lassen sich solche Files ganz einfach in nginx Dateien umwandeln um auch hier kompatibel zu sein.

 

Zusammenfassung

Apache verbraucht 10 mal mehr Rechnerleistung wie sein direkter Konkurrent. Die Betreiber von stark besuchten Webseiten müssen sich ernsthaft überlegen, ob ein Wechsel zu nginx angebracht ist. Eine Alternative wäre auch noch einen nginx Server als Proxyserver zu verwenden um den Server von Apache zu entlasten. Für ganz normale Webseiten die keinen übermäßigen Traffic verzeichnen ist der Server von Apache sicherlich vollkommen ausreichend.