Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Warum ist Nginx schnell?

Warum ist Nginx schnell?

(*-*)浩
(*-*)浩Original
2019-06-13 09:13:396605Durchsuche

Warum ist Nginx so effizient und so schnell?

Warum ist Nginx schnell?

Designprinzip

Ein Hochleistungsserver zeichnet sich typischerweise durch eine hohe Verarbeitungsgeschwindigkeit und einen geringen Ressourcenverbrauch aus, insbesondere wenn dies der Fall ist Zehntausende von Verbindungen gleichzeitig online. Um eine schnelle Verarbeitungsgeschwindigkeit zu erreichen, ist das Design des Parallelitätsmodells besonders wichtig.

Der Grad der Server-Parallelität hängt von zwei Faktoren ab: Zum einen von der Anzahl der damit verbundenen Prozesse Der andere ist die Anzahl der Prozesse, die jeder Prozess gleichzeitig verarbeiten kann. Daher besteht das Server-Parallelitätsmodell aus zwei Teilen, der Dienstbereitstellungsmethode und dem Linkverarbeitungsmechanismus 🎜>Aufgrund dieser beiden einzigartigen Methoden funktioniert Nginx gut unter denselben Webservertypen.

Verbindungsmethode

Im Allgemeinen werden Webserver-Verbindungsmethoden in drei Typen unterteilt : Multiprozessmethode, Multithread-Methode und asynchrone Methode. Multi-Prozess erfordert zusätzlichen Overhead, z. B. das Kopieren von Speicher, während Multi-Threading keinen Overhead erfordert.

Asynchron verwendet eine nicht blockierende Methode, um mit jedem Client zu kommunizieren. Zu den typischen Anwendungen gehört Der Arbeitsprozess von Nginx. Unter diesen ist die effizienteste asynchrone Methode, die stabilste Multiprozess-Methode und die geringste Ressourcenbelegung Multithreading

Nginx bietet Dienste basierend auf dem Ereignismodell (asynchroner Modus). Dies ist besser geeignet, wenn die Anzahl der Verbindungen pro Sekunde und die Anzahl der Anforderungen gleichzeitig nichtlinear sind. Selbst wenn die Last zunimmt, bleibt die Anzahl der Speicher- und CPU-Nutzungsereignisse vorhersehbar. Nginx kann mit normaler Hardware Zehntausende gleichzeitiger Verbindungen auf einem Server verarbeiten. Dies ist der erste Grund für die hohe Leistung von Nginx.

Andere Dinge, die Nginx macht

Zusätzlich zu den oben genannten beiden Prinzipien gibt es intern viele sichtbare Detailoptimierungen, die einen Multiprozess-Einzelprozess verwenden. Thread-Arbeitsmethode, und die Affinität zwischen der CPU und dem Prozess wird verwendet, um den Prozess an eine bestimmte CPU zu binden, wodurch die Kosten für den Prozesskontextwechsel vermieden und somit die CPU-Auslastung reduziert wird. Darüber hinaus wird ein effizienter Speicherpool implementiert, der die Speichernutzung usw. minimiert.

Verbindungsverarbeitungsmechanismus

Es gibt fünf Linux-Verbindungsmodelle, synchrones IO und Synchronisationsgebührenblockierung io, asynchrones blockierendes io (io-Multiplexing), asynchrones nicht blockierendes io (signalgesteuertes oder asynchrones io)

Die folgenden sind die wichtigsten Punkte:

<1> O Multiplexing Wenn Sie das Modell verwenden, verwenden Sie die Auswahl- oder Abfragefunktion. Im Gegensatz zum Blockieren von E/A können sie auch mehrere E/A-Vorgänge gleichzeitig blockieren Mehrere Lesevorgänge gleichzeitig werden erkannt und die E/A-Operationsfunktion wird erst dann aufgerufen, wenn die Daten lesbar oder beschreibbar sind.

Im io-Wiederverwendungsmodell werden Auswählen und Abfragen im Allgemeinen von Betriebssystemen unterstützt, aber jedes Mal, wenn Sie warten, müssen Sie die Socket-Schnittstelle einrichten, auf die gewartet werden muss, und die interne Implementierung ist nicht effizient Dies macht es schwierig, eine hohe Parallelitätsüberwachung zu bezahlen. Verschiedene Betriebssysteme verwenden unterschiedliche fortschrittliche Abfragetechniken, um eine Hochleistungsüberwachung zu unterstützen. Im Allgemeinen sind diese Methoden nicht portierbar.

Nginx hat verschiedene E/A-Verarbeitungsmechanismen für verschiedene Betriebssysteme angepasst und nutzt im Allgemeinen die Hochleistungsschnittstelle des Betriebssystems. Dies ist der zweite Grund für die hohe Leistung von Nginx

< 2>Asynchrone E/A: Wenn eine asynchrone Prozeduraufrufanforderung ausgegeben wird, kann der Aufrufer das Ergebnis nicht sofort erhalten. Nachdem die Komponente, die diesen Aufruf tatsächlich verarbeitet, abgeschlossen ist, benachrichtigt sie den Aufrufer durch Status, Benachrichtigungen und Rückrufe über die Eingabe- und Ausgabevorgänge.

Weitere technische Artikel zu Nginx finden Sie im

Tutorial zur Nginx-Nutzung

Kolumne Fang an zu lernen!

Das obige ist der detaillierte Inhalt vonWarum ist Nginx schnell?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Ist Nginx ein Webserver?Nächster Artikel:Ist Nginx ein Webserver?