Vorteile von Nginx bei Verwendung eines Multiprozessmodells
Zunächst einmal für jeden Arbeitsprozess Es ist unabhängig Der Prozess muss nicht gesperrt werden, sodass der durch das Sperren verursachte Overhead entfällt. Gleichzeitig ist die Programmierung und Problemsuche wesentlich komfortabler. (Empfohlenes Lernen: Nginx-Verwendung)
Zweitens wirkt sich die Verwendung unabhängiger Prozesse nicht gegenseitig aus. Nach dem Beenden eines Prozesses funktionieren andere Prozesse weiterhin und der Dienst wird nicht unterbrochen. Der Masterprozess startet schnell einen neuen Arbeitsprozess.
Wenn der Worker-Prozess abnormal beendet wird, muss natürlich ein Fehler im Programm vorliegen, der dazu führt, dass alle Anforderungen des aktuellen Workers fehlschlagen. Dies wirkt sich jedoch nicht auf alle Anforderungen aus, sodass ein Risiko besteht reduziert.
nginx-Multiprozess-Ereignismodell: asynchron und nicht blockierend
Obwohl Nginx einen Multi-Worker-Ansatz zur Bearbeitung von Anfragen verwendet, gibt es einen Nur einer in jedem Worker Der Hauptthread, aber Nginx verwendet eine asynchrone und nicht blockierende Methode, um Anfragen zu verarbeiten. Mit anderen Worten, Nginx kann Tausende von Anfragen gleichzeitig verarbeiten.
Die Anzahl der Anfragen, die ein Arbeitsprozess gleichzeitig verarbeiten kann, ist nur durch die Speichergröße begrenzt, und im Hinblick auf das Architekturdesign gibt es bei der Verarbeitung gleichzeitiger Anfragen zwischen verschiedenen Arbeitsprozessen nahezu keine Einschränkungen durch Synchronisationssperren . Worker-Prozesse gehen normalerweise nicht in den Ruhezustand.
Wenn daher die Anzahl der Prozesse auf Nginx der Anzahl der CPU-Kerne entspricht (es ist am besten, wenn jeder Arbeitsprozess an einen bestimmten CPU-Kern gebunden ist), sind die Kosten für den Wechsel zwischen Prozessen minimal.
Was die allgemeine Arbeitsmethode von Apache betrifft (Apache hat auch eine asynchrone, nicht blockierende Version, die jedoch nicht häufig verwendet wird, da sie mit einigen seiner eigenen Module in Konflikt steht), verarbeitet jeder Prozess nur eines jeweils eine Anfrage stellen.
Wenn die Anzahl der Parallelitäten Tausende erreicht, verarbeiten Tausende von Prozessen Anforderungen gleichzeitig. Dies stellt eine große Herausforderung für das Betriebssystem dar. Der vom Prozess belegte Speicher ist sehr groß und der durch den Kontextwechsel des Prozesses verursachte CPU-Overhead kann nicht verbessert werden, und dieser Overhead ist völlig bedeutungslos . .
Das obige ist der detaillierte Inhalt vonWelche Vorteile bietet die Verwendung mehrerer Prozesse in Nginx?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!