Frage Warum ist Nginx so schnell?


Wie kann eine Website wie Rambler dynamische Inhalte so schnell bereitstellen? Noch schneller als Yahoo (die einen Server in meinem Land hat - SE Asia; Rambler nicht).

Ist das die Fähigkeit von Nginx? Wo sollte ich nachschauen, um über solche Fähigkeiten zu lernen?

Ziemlich viel Neuling hier, ich glaube, dass serverfault.com, wenn von Nginx bedient wird, viel schneller sein wird der IIS 7 (unter der Annahme, db Zugriffszeit in beiden Fällen gleich zu sein). Ist das eine faire Annahme?

Bearbeiten: 

Beitrag von Karl mit Nginx vor IIS7


31
2017-11-20 14:47


Ursprung


Beachten Sie, dass serverfault.com bereits Nginx verwendet (nach Wappalyzer). : P - WillS


Antworten:


Sie können sehen diese Präsentation für einen Überblick über Nginx Interna. Der Hauptunterschied besteht in der asynchronen Behandlung von Anfragen anstelle von Threads wie bei Apache. Sie können sich das ansehen diese Dokumentation auch.


26
2017-11-20 15:19



Gute Antwort auf die Architektur von nginx und das C10K-Problem. Ich verstehe jedoch, dass die OP-Frage die wahrgenommene Seitenladegeschwindigkeit ist, die wenig mit nginx zu tun hat. - Jesper Mortensen
Was bedeutet "asynchron" eigentlich? Ich habe immer gedacht, dass es in einem separaten Thread ausgeführt bedeutet. - Ivan
Asynchrones Mittel Nginx agiert immer als Proxy, selbst mit PHP: Nginx erhält die HTTP-Anfrage, sendet an PHP-Server ABER blockiert / wartet nicht, um die HTTP-Antwort zu senden. Deshalb sehen Sie einen Unterschied (Geschwindigkeit, CPU / RAM) für die Website mit hohem Traffic. Aber es gibt keinen Leistungsgewinn für ein paar Anfragen (die 95% des Internets betreffen ...), aber Nginx ist cool ;-) - Thomas Decaux


Wie kann eine Website wie Rambler dynamische Inhalte so schnell bereitstellen? ...   Ist das die Fähigkeit von Nginx? Wo sollte ich nachschauen, um über solche Fähigkeiten zu lernen?

Dies hat mit dem verwendeten Webserver wenig zu tun - sowohl nginx, IIS als auch Apache sind "schnell genug" und erledigen ihre Arbeit in der Regel innerhalb von Millisekunden. nginx ist viel schneller als Apache, aber das bedeutet lediglich, dass der Websitebesitzer weniger Server für den Webserving-Teil benötigt - nginx überträgt keine Daten schneller an Sie.

Der weniger wichtige Teil ist die serverseitige Geschwindigkeit, d. h. die Zeit, die zum Erstellen des HTML benötigt wird. Der wichtigere Teil ist die "Frontend" -Leistung, mit denen ich die HTML, CSS, Javascript und Bilder, die Anzahl von diesen, die Größe von diesen und die ordnungsgemäße Lieferung (HTTP-Komprimierung, Caching) von diesen meinen.

Natürlich ist die serverseitige Geschwindigkeit immer noch wichtig, ich sage nicht, dass es ignoriert werden sollte oder dass es keine Rolle spielt. Aber normalerweise ist es der kleinste wahrgenommene Teil der Endbenutzergeschwindigkeit - die serverseitige Arbeit wird oft in weniger als 500 Millisekunden erledigt, aber die Seite ist nicht fertig, bevor 3.000 - 5.000 Millisekunden vergangen sind. Der Großteil dieser Zeit geht an den Download der Frontend-Ressourcen (CSS, Javascript, Images).

Steve Souders hat das Original bei Yahoo gearbeitet, er arbeitet jetzt bei Google. Sein erstes Buch "High performance websites" ist der beste Ausgangspunkt, um mehr über das Erstellen schneller Websites zu erfahren. Das gleiche Material, das in seinem Buch ist, kann in gefunden werden dieses Video sprechen, und diese Designregeln. Ich finde jedoch, dass das Buch schnell zu lesen und viel einfacher zu verstehen ist.

Sie können die Websites durch ausführen Der Tester von WebPageTest.org - das gibt Ihnen ein gutes Gefühl für den Frontend-Teil dieser Seiten, und warum sie schneller oder langsamer sind.

Ich glaube, dass serverfault.com, wenn es von Nginx bedient wird, viel schneller sein wird als der IIS 7 (unter der Annahme, dass die Zugriffszeit der Datenbank in beiden Fällen gleich ist). Ist das eine faire Annahme?

Nein, das ist ein Missverständnis. :-)


21
2017-11-20 19:02





Nginx wird häufiger zum Lastenausgleich anderer Anwendungen / Server und zum Bereitstellen statischer Inhalte verwendet, als es als vollständiger Server verwendet wird.

Zum Beispiel können Sie eine App mit einem der vielen Python-Frameworks schreiben, und nginx ist das Front-End für viele Instanzen (vielleicht auf mehrere Maschinen verteilt). In diesem Fall dient nginx zwei Zwecken: Er verarbeitet Anfragen für statische Inhalte wie Bilder und Stylesheets direkt (und tut dies aufgrund seines Designs) sehr schnell), und es übergibt dynamische Anfragen an die Anwendung, die die Last zwischen allen Instanzen verteilt, von denen es weiß. Dies ist eine sehr beliebte Konfiguration in der Ruby on Rails Community.

Es gibt zwei andere mögliche Gründe, warum Rambler Ihnen schneller erscheint als der lokale Yahoo-Dienst. Erstens hat das lokale Yahoo PoP möglicherweise nicht genug Ressourcen zur Verfügung, um die Anzahl der Anfragen zu bedienen, die es schneller bekommt. Vielleicht würde es einfach mehr Hardware hinzufügen (vorausgesetzt, die Software skaliert auf diese Weise) würde es beschleunigen (aber vermutlich ist der Unterschied nicht) Wert der Kosten für die Wartung der extra-Kit oder Yahoo würde dies getan haben). Der andere große Unterschied liegt eher im Backend als im Webserver - die beiden Dienste werden zweifelsohne sehr unterschiedliche Datenbankanordnungen haben und selbst wenn sie nicht genau die gleiche Vielfalt von Abfragen ausführen (und die Menge an Hardware, die für die Datenbankarchitektur bestimmt ist, wird ebenfalls einen signifikanten Effekt haben).

Die Analyse, warum ein Dienst schneller ist als ein anderer (allgemein oder unter bestimmten Umständen), führt normalerweise nicht zu einer einfachen Antwort. Es gibt viele Möglichkeiten, eine App so zu gestalten, dass sie für viele Tausende von Benutzern skalierbar ist eigene Vorteile, Probleme und Kompromisse und selbst wenn Sie all diese Unterschiede aus jeder Site herausfiltern, haben Sie eine andere Benutzerdynamik, und es gibt Netzwerkprobleme, die auch die Designer nicht kontrollieren können.


18
2017-11-20 15:49





nginx möglicherweise aber mehr skalierbare Architektur mit vernünftigem Lastausgleich vor statischen Inhaltsservern / dynamischen Inhaltsgeneratoren. Wenn Sie wirklich gute Erfahrungen mit Endbenutzern machen möchten, sollten Sie den Inhalt wahrscheinlich näher an die "Augäpfel" bringen - verwenden Sie ein CDN.

Wenn Sie sich für das Thema interessieren - schauen Sie nach diese und Das und .. gut - google; -]


3
2017-11-20 15:18





Die besten Seiten verwenden Anwendungsbeschleuniger wie Zeus ZXTMs - sie können in vielen Fällen dynamische Antworten zwischenspeichern, was offensichtlich von großem Vorteil ist.


2
2017-11-20 14:59





Hier ist eine gute Erklärung: http://www.aosabook.org/en/nginx.html


1
2017-09-03 23:55





Es fällt mir schwer, den Serverfehler viel schneller zu sehen (SO könnten Ladeprobleme aufgrund des Datenverkehrs auftreten?), Da es hier in der EU bereits eine sofortige Seitenladung über meine Route gibt. Es ist viel schneller und reaktionsschneller als die meisten lokalen Nachrichtenseiten und so weiter.

Die meisten der offensichtlichen Probleme mit Ladezeiten und Latenzzeiten entstehen zwischen dem Server und dem Endbenutzer imo und nicht der tatsächlichen Serverleistung (es sei denn, jemand hat etwas falsch dimensioniert oder falsch ausgelegt). Verschiedene Websites können auf unterschiedliche Weise geroutet werden, und es gibt eine große Wahrscheinlichkeit, dass eine länderspezifische Site für mich eine größere Latenz hat als irgendetwas auf der ganzen Welt - alles hängt von so vielen Variablen ab, dass man nicht sagen kann, dass es nur durch einen Service lösbar ist upgrade / switch wenn du nicht weißt, dass das Problem für eine bestimmte Verwendung (r) ist ...

Offensichtlich macht das Caching von verschiedenen Arten auf dem Server einen großen Unterschied, aber all diese Seiten machen das soweit ich weiß.


0
2017-11-20 15:08