Heim >Backend-Entwicklung >PHP-Tutorial >Wie ist Nginx auf Leistung und Skalierbarkeit ausgelegt?
# service nginx restart
* Nginx wird neu gestartet
# ps -ef --forest |
root 32475 1 0 13:36 ? 00:00:00 nginx: Masterprozess /usr/sbin/nginx-c /etc/nginx/nginx.confnginx 32476 32475 0 13:36 ? 00:00:00 _ nginx: Worker-Prozessnginx 32477 32475 0 13:36 ? 00:00:00 _ nginx: Worker-Prozessnginx 32479 32475 0 13:36 ? 00:00:00 _ nginx: Worker-Prozessnginx 32480 32475 0 13:36 ? 00:00:00 _ nginx: Worker-Prozessnginx 32481 32475 0 13: 36 ? 00:00:00 _ nginx: Cache-Manager-Prozessnginx 32482 32475 0 13:36 ? 00:00:00 _ nginx: Cache-Loader-ProzessAnwendungen können mehrere CPU-Kerne des Computers gleichzeitig nutzen
Threads und Prozesse lassen sich einfach parallel betreiben, wie die gleichzeitige Verarbeitung mehrerer Verbindungen
Der Hauptprozess verarbeitet privilegierte Vorgänge wie das Lesen von Konfigurationsdateien, Portbindung usw. sowie die Erstellung einer kleinen Gruppe von Unterprozessen (die nächsten drei Arten von Prozessen)
Cache wird beim Start geladen. Der Serverprozess lädt den Cache von der Festplatte in den Speicher und wird dann beendet. Die Planung ist konservativ, sodass der Ressourcenaufwand gering ist
Der Cache-Verwaltungsprozess wird regelmäßig ausgeführt und bereinigt Entitäten aus dem Festplatten-Cache auf die angegebene Größe
Der Worker-Prozess ist für alle Arbeiten verantwortlich und verwaltet Netzwerkverbindungen, Lese- und Schreibvorgänge auf der Festplatte sowie die Upstream-Serverkommunikation.
worker_processes auto;
Der Netzwerkserverprozess wartet auf neue Verbindungen am Socket . Diese neuen Verbindungen zum Spiel werden vom Client initiiert.
Sobald Sie ein neues Spiel erhalten und die Spielsitzung betreten, müssen Sie jedes Mal warten, bis der Client antwortet, und der Vorgang wird blockiert.
Sobald das Spiel beendet ist, prüft der Netzwerkserverprozess, ob der Client erneut spielen möchte (entsprechend einer Live-Verbindung). Sobald die Verbindung geschlossen wird (der Client verlässt die Verbindung oder es kommt zu einer Zeitüberschreitung), kehrt der Netzwerkserverprozess zum Warten auf neue Spiele zurück.
Der Worker-Prozess stellt eine Verbindung her und beginnt, den Socket abzuhören, um die zu erhalten Ereignis dort;
Sobald der Socket das Ereignis empfängt, verarbeitet der Worker-Prozess das Ereignis sofort:
Ein Listening-Ereignis am Socket bedeutet, dass der Client ein neues Schachspiel startet und der Arbeitsprozess eine neue Socket-Verbindung erstellt.
Ein Ereignis bei der Socket-Verbindung besteht darin, dass der Client eine Bewegung ausführt und der Arbeitsthread entsprechend reagiert.
Laden Sie die Konfigurationsdatei neu, erstellen Sie einen neuen Satz von Arbeitsprozessen, und die neu erstellten Arbeitsprozesse akzeptieren sofort Verbindungen und wickeln die Netzwerkkommunikation ab (übernehmen der neuen Konfigurationsumgebung).
Benachrichtigt alte Worker-Prozesse zur ordnungsgemäßen Einführung und diese Worker-Prozesse akzeptieren keine neuen Verbindungen mehr. Sobald die aktuell verarbeitete HTTP-Anfrage abgeschlossen ist, schließt der Arbeitsprozess die Verbindung. Sobald alle Verbindungen geschlossen sind, wird der Arbeitsprozess beendet.
NGINX-Installation und Leistungsoptimierung
NGINX-Leistungsoptimierung
《Nginx führt einen Thread-Pool ein, um die Leistung um das Neunfache zu verbessern 》
NGINX - Open Source Application Framework
NGINX Socket Sharding Release 1.9.1
Nachdruck von : Python-Entwickler
Das Obige stellt vor, wie Nginx auf Leistung und Skalierbarkeit ausgelegt ist. Ich hoffe, dass es Freunden, die sich für PHP-Tutorials interessieren, hilfreich sein wird, einschließlich relevanter Inhalte.