Heim > Artikel > Betrieb und Instandhaltung > Warum kann Nginx eine hohe Parallelität erreichen?
Einfach ausgedrückt ist es asynchron, nicht blockierend , mit epoll und viel zugrunde liegendem Code Optimierung.
Etwas detaillierter ist es das Design des speziellen Prozessmodells und des Ereignismodells von Nginx.
Videokursempfehlung→: "Zehn-Millionen-Ebenen-Datenparallelitätslösung (Theorie + Praxis)"
nginx übernimmt einen Masterprozess und mehrere Workerprozesse.
Der Masterprozess ist hauptsächlich für das Sammeln und Verteilen von Anfragen verantwortlich. Wenn eine Anfrage eingeht, startet der Master einen Arbeitsprozess, um die Anfrage zu bearbeiten.
Der Master-Prozess ist auch für die Überwachung des Status des Wokers verantwortlich, um eine hohe Zuverlässigkeit sicherzustellen
Der Woker-Prozess ist im Allgemeinen festgelegt um die Anzahl der CPU-Kerne konsistent anzupassen. Der Woker-Prozess von Nginx unterscheidet sich vom Apache. Der Apche-Prozess kann nur eine Anfrage gleichzeitig bearbeiten, sodass viele Prozesse geöffnet werden, Hunderte oder sogar Tausende. Die Anzahl der Anforderungen, die der Woker-Prozess von Nginx gleichzeitig verarbeiten kann, ist nur durch den Speicher begrenzt, sodass mehrere Anforderungen verarbeitet werden können.
nginx ist asynchron und nicht blockierend.
Jedes Mal, wenn eine Anfrage eingeht, gibt es einen Arbeitsprozess, um sie zu verarbeiten. Aber es ist nicht der gesamte Prozess. Prozess, bei dem eine Blockierung auftreten kann, z. B. die Weiterleitung der Anfrage an den Upstream-Server (Backend) und das Warten auf die Rückgabe der Anfrage. Dann wird der Verarbeitungsmitarbeiter nicht so dumm warten. Nach dem Senden der Anfrage wird er ein Ereignis registrieren: „Wenn der Upstream zurückkehrt, sagen Sie es mir und ich werde fortfahren.“ Also ging er zur Ruhe. Wenn zu diesem Zeitpunkt eine weitere Anfrage eingeht, kann er diese auf diese Weise schnell bearbeiten. Sobald der Upstream-Server zurückkehrt, wird dieses Ereignis ausgelöst, der Worker übernimmt und die Anfrage wird weiterhin ausfallen.
Die Arbeitsweise des Webservers bestimmt, dass der Großteil der Lebensdauer jeder Anfrage in der Netzwerkübertragung liegt. Tatsächlich wird nicht viel Zeit auf dem Servercomputer verbracht. Dies ist das Geheimnis, um hohe Parallelität mit nur wenigen Prozessen zu lösen.
Weitere technische Artikel zum Thema Nginx finden Sie in der Spalte Nginx-Tutorial, um mehr zu erfahren!
Das obige ist der detaillierte Inhalt vonWarum kann Nginx eine hohe Parallelität erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!