Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:

In diesem Artikel versuchen wir uns an Reverse Engineering. Wir werfen unsere dreckigen Hände unter die Haube jedes der Webserver und nutzen sie, wie sie niemals genutzt werden sollten.

Dieser Test ist ein Vergleich, der nichts weiter als ein Datenabtastung darstellt, und jetzt wissen wir nicht, was wir damit anfangen sollen.

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:

Methodik

Als Betriebssystem für Nginx und Apache verwenden wir Ubuntu 18.04 LTS, für IIS den Windows Server Core 2019. Alle Betriebssysteme wurden vor den Tests mit den neuesten Updates bis zum 04.12.2019 versehen.

Die Tests wurden ausschließlich über HTTP durchgeführt. Auf jedem der Webserver lief dieselbe Seite, ein kostenloses Jekyll-Template von Codrops. Link. Auf jedem der Webserver wurde die Gzip-Kompression deaktiviert.

Der Durchsatztest wurde mit Httpd-tools und den Argumenten durchgeführt:

ab -n 50000 -c 500 http://192.168.76.204:80/

Auf den Servern wurde eine Begrenzung von 10, 5 und 1 Prozent der CPU für 8, 4 und einem Kern eingerichtet. Als Teststand diente ein Computer mit einem 9900K@5400MHz, was bedeutet, dass der Server, der eine Begrenzung von 10% erhielt, etwa 540MHz pro Kern erhält.

Der TTFB-Test wurde bei der ersten Server-Ladung durchgeführt und mit den DevTools gemessen. Nach Erhalt des Ergebnisses wurde der Server heruntergefahren und auf den vorherigen Wiederherstellungspunkt zurückgesetzt, um die Entstehung jeglicher Art von Caches auszuschließen.

Der Tester und der Webserver befanden sich auf demselben Host und im selben virtuellen Switch.

Um die Disk-Subsysteme sofort zu bewerten, wurden die Ergebnisse der Benchmarks ATTO und CrystalDiskMark überprüft, um Engpässe zu identifizieren.

Daten abgerufen von der virtuellen Maschine:Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:

Ergebnisse:

TTFB:

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Der durchschnittliche TTFB bei IIS ist der niedrigste, mit 0,5 ms, verglichen mit 1,4 ms bei Apache und 4 ms bei Nginx.

Throughput:

Zuerst betrachten wir, wie gut sich jeder Server hinsichtlich der Anzahl der Kerne skalieren lässt.

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Das Diagramm zeigt die Anzahl der Anfragen des Testers an den Webserver und die Latenz. Es ist zu sehen, dass NGINX 98% aller Anfragen bearbeitet hat und die Website in 20 ms oder weniger geliefert hat. IIS und Apache benötigten für die letzten 5% aller Anfragen 76 ms bzw. 14 ms.

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Das Diagramm zeigt die durchschnittliche Bearbeitungszeit einer Anfrage während des Stresstests.

Wie aus den Diagrammen ersichtlich ist, hat IIS sowohl gegen Apache als auch gegen Nginx verloren und hat sich bei hoher Last stark verlangsamt. 

IIS hat eindeutig 4 Kerne gegenüber 8 vorgezogen und zeigte geringere Latenzzeiten bei 4 Kernen, aber auch eine einzelne Kernkonfiguration wurde nicht stark beworben.

NGINX skaliert hervorragend auf alle 8 Kerne, während für Apache ein einhäufiges Szenario anscheinend die beste Wahl ist.

Skalierbarkeit:

Nginx:

Betrachten wir jetzt die Skalierbarkeit in Bezug auf Taktfrequenz und Anzahl der Kerne. 

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Tests mit einer Begrenzung von 1% auf 4 und 1 Kern hat Nginx nicht bestanden, da es bei über 2000 Anfragen die Verbindung zum Tester abbrach.

Apache:

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Wie Nginx hat Apache bei 2500 Anfragen aufgegeben und die Verbindung abgebrochen. Apache hat den Test bei 8, 4 und 1 Kern mit einer Begrenzung von 1% nicht bestanden, zudem hat es auch den Test mit 5% Beschränkung bei einem Kern nicht überstanden, was schlechter ist als Nginx.

IIS:

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
IIS sammelte während der Tests eine massive Warteschlange von Anfragen, bearbeitete jedoch jede einzelne. Offensichtlich sind in der Standardkonfiguration keine Timeout-Einstellungen für die Anfrageverarbeitung eingerichtet.

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Das Diagramm zeigt die Zeit, die für den Test benötigt wurde. Völlig absurde Testkonfigurationen wurden ausgeschlossen. Aus dem Diagramm wird ersichtlich, wie ressourcenintensiv IIS ist und wie hervorragend NGINX abschneidet.

Skalierbarkeit vom Datenträger:

Nginx:

Lassen Sie uns jetzt die Skalierbarkeit in Bezug auf Frequenz, Anzahl der Kerne und Geschwindigkeit der Festplatte betrachten. 

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
In diesem Test hat Nginx diesmal 4 Tests nicht bestanden, anstatt nur zwei.

Apache:

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
Apache hat die gleiche Anzahl an Tests nicht bestanden wie beim letzten Mal.

IIS:

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:
IIS zeigt nahezu identische Ergebnisse, als ob es keine Einschränkungen bezüglich der Festplatte gegeben hätte. Insgesamt haben sich die Diagramme der Server nicht stark verändert, was bedeutet, dass jeder von ihnen die statischen Inhalte im Arbeitsspeicher zwischengespeichert und daraus ausgeliefert hat. Hier sehen wir den Hauptengpass – den Webserver selbst.

Es ist zu früh, um auf Basis dieser Tests Schlussfolgerungen zu ziehen; wir haben HTTPS, Kompression und HTTP/2 mit einem Live-Zertifikat von Let’s Encrypt noch nicht getestet. Darüber werden wir im nächsten Artikel berichten.

Die Schlacht der WEB-Server. Teil 1 – abgehobenes HTTP:

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster