Was ist Socket-Segmentierung im Nginx-Server?
Mit der Version 1.9.1 von Nginx wird eine neue Funktion eingeführt: Sie ermöglicht die Verwendung der Socket-Option so_reuseport, die in neuen Versionen vieler Betriebssysteme verfügbar ist, einschließlich Dragonfly BSD und Linux (Kernel-Version 3.9 und höher). Mit dieser Socket-Option können mehrere Sockets dieselbe IP- und Port-Kombination überwachen. Der Kernel ist in der Lage, die Last eingehender Verbindungen über diese Sockets zu verteilen. (Für Nginx Plus-Kunden wird diese Funktion in Version 7 erscheinen, die Ende des Jahres veröffentlicht wird)
Die Option so_reuseport bietet viele potenzielle reale Anwendungen. Andere Dienste können es auch nutzen, um fortlaufende Upgrades einfach während der Ausführung umzusetzen (nginx unterstützt bereits fortlaufende Upgrades). Für Nginx kann die Aktivierung dieser Option in bestimmten Szenarien Sperrenkonflikte reduzieren und die Leistung verbessern.
Wie in der Abbildung unten beschrieben, benachrichtigt ein separater Listening-Socket den Worker-Prozess über die Verbindung, auf die zugegriffen wird, und jeder Worker-Thread versucht, die Verbindung herzustellen, wenn die Option so_reuseport gültig ist.
Wenn die Option so_reuseport aktiviert ist, gibt es mehrere Socket-Listener für jede IP-Adresse und portgebundene Verbindung, und jedem Arbeitsprozess kann einer zugewiesen werden. Der Systemkernel bestimmt, welcher gültige Socket-Listener (und implizit für welchen Arbeitsprozess) die Verbindung erhält. Dies kann die Sperrenkonkurrenz zwischen Arbeitsprozessen beim Erhalten neuer Verbindungen verringern (Anmerkung des Übersetzers: Konkurrenz zwischen Arbeitsprozessen, die sich gegenseitig ausschließende Ressourcensperren anfordern) und die Leistung auf Mehrkernsystemen verbessern. Dies bedeutet jedoch auch, dass, wenn ein Arbeitsprozess in einen Blockierungsvorgang gerät, die Blockierung nicht nur den Arbeitsprozess betrifft, der die Verbindung akzeptiert hat, sondern auch dazu führt, dass der Arbeitsprozess, der vom Kernel geplant ist, die Verbindungsanforderung sendet und daher wird blockiert.
Gemeinsam genutzten Socket einrichten
Damit die Socket-Option so_reuseport funktioniert, sollte der neue Reuseport-Parameter direkt für das Listenelement in der Kommunikationsoption http oder tcp (Stream-Modus) eingeführt werden, z folgendes Beispiel:
Code kopieren Der Code lautet wie folgt:
http {
Server { listen 80 reuseport;
server_name localhost; ...
}
}
stream {
server { listen 12345 reuseport;
Nach dem Verweisen auf den Reuseport-Parameter ist der Accept_mutex-Parameter für den referenzierten Socket ungültig, da der Mutex (Mutex) für Reuseport redundant ist. Für Ports, die Reuseport nicht verwenden, ist es dennoch sinnvoll, Accept_mutex festzulegen.
Ich habe einen weiteren entsprechenden Leistungstest durchgeführt – der Client und Nginx befanden sich auf unterschiedlichen Maschinen und Nginx gab eine HTML-Datei zurück. Wie in der folgenden Tabelle gezeigt, ähnelt die Latenzreduzierung mithilfe von Reuseport dem vorherigen Leistungstest, wobei die Standardabweichungsreduzierung der Latenz signifikanter ist (fast ein Zehntel). Andere Ergebnisse (nicht in der Tabelle aufgeführt) sind gleichermaßen ermutigend. Mithilfe von Reuseport wird die Last gleichmäßig auf die Worker-Prozesse verteilt. Unter Standardbedingungen (entspricht „accept_mutex“ aktiviert) erhalten einige Worker einen höheren Prozentsatz der Last, während bei deaktiviertem „accept_mutex“ alle Worker eine höhere Last erhalten.
Standard 15,65 26,59 0,3
accept_mutex aus 15,59 26,48 10Wiederverwendung 12,35 3,15 0,3
In diesen Leistungstests wird die Geschwindigkeit der Verbindungsanforderung gemessen ist sehr hoch, aber die Anfrage erfordert keinen großen Verarbeitungsaufwand. Andere grundlegende Tests sollten darauf hinweisen, dass Reuseport auch die Leistung erheblich verbessern kann, wenn der Anwendungsverkehr in dieses Szenario passt. (Der Reuseport-Parameter kann nicht in der Listen-Direktive im E-Mail-Kontext, z. B. E-Mail, verwendet werden, da der E-Mail-Verkehr diesem Szenario definitiv nicht entspricht.) Wir empfehlen Ihnen, ihn zunächst zu testen, anstatt ihn direkt in großem Umfang anzuwenden.
Das obige ist der detaillierte Inhalt vonWas ist Socket-Segmentierung im Nginx-Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

Wie konfiguriere ich Nginx in Windows? Installieren Sie NGINX und erstellen Sie eine virtuelle Hostkonfiguration. Ändern Sie die Hauptkonfigurationsdatei und geben Sie die Konfiguration der virtuellen Host ein. Starten oder laden Nginx neu. Testen Sie die Konfiguration und sehen Sie sich die Website an. Aktivieren Sie selektiv SSL und konfigurieren Sie SSL -Zertifikate. Stellen Sie die Firewall selektiv fest, damit Port 80 und 443 Verkehr.

Es gibt zwei Möglichkeiten, das Problem mit dem Cross-Domain-Problem mit dem NGINX-Problem zu lösen: Änderungen der Cross-Domänen-Antwort-Header: Fügen Sie Anweisungen hinzu, um Cross-Domain-Anforderungen zu ermöglichen, zulässigen Methoden und Header anzugeben und die Cache-Zeit festzulegen. Verwenden Sie das CORS-Modul: Aktivieren Sie Module und konfigurieren Sie die CORS-Regeln, um Cross-Domain-Anforderungen, Methoden, Header und Cache-Zeit zu ermöglichen.

Verwenden Sie unter Linux den folgenden Befehl, um zu überprüfen, ob Nginx gestartet wird: SystemCTL -Status Nginx Richter basierend auf der Befehlsausgabe: Wenn "aktiv: aktiv (lief) angezeigt wird, wird Nginx gestartet. Wenn "Active: Inactive (Dead)" angezeigt wird, wird Nginx gestoppt.

Schritte zum Starten von Nginx unter Linux: Überprüfen Sie, ob Nginx installiert ist. Verwenden Sie SystemCTL Start Nginx, um den Nginx -Dienst zu starten. Verwenden Sie SystemCTL aktivieren NGINX, um das automatische Start von NGINX beim Systemstart zu aktivieren. Verwenden Sie den SystemCTL -Status NGINX, um zu überprüfen, ob das Startup erfolgreich ist. Besuchen Sie http: // localhost in einem Webbrowser, um die Standard -Begrüßungsseite anzuzeigen.

Antwort auf die Frage: 304 Nicht geänderter Fehler gibt an, dass der Browser die neueste Ressourcenversion der Client -Anfrage zwischengespeichert hat. Lösung: 1. Löschen Sie den Browser -Cache; 2. Deaktivieren Sie den Browser -Cache; 3. Konfigurieren Sie Nginx, um den Client -Cache zu ermöglichen. 4. Überprüfen Sie die Dateiberechtigungen; 5. Datei Hash prüfen; 6. Deaktivieren Sie CDN oder Reverse Proxy -Cache; 7. Starten Sie Nginx neu.

Die Methoden zum Anzeigen des laufenden Status von Nginx sind: Verwenden Sie den Befehl ps, um den Prozessstatus anzuzeigen; Zeigen Sie die nginx -Konfigurationsdatei /etc/nginx/nginx.conf an; Verwenden Sie das Nginx -Statusmodul, um den Statusendpunkt zu aktivieren. Verwenden Sie Überwachungstools wie Prometheus, Zabbix oder Nagios.

Das Starten eines Nginx-Servers erfordert unterschiedliche Schritte gemäß verschiedenen Betriebssystemen: Linux/UNIX-System: Installieren Sie das NGINX-Paket (z. B. mit APT-Get oder Yum). Verwenden Sie SystemCTL, um einen Nginx -Dienst zu starten (z. B. sudo systemctl start nginx). Windows -System: Laden Sie Windows -Binärdateien herunter und installieren Sie sie. Starten Sie Nginx mit der ausführbaren Datei nginx.exe (z. B. nginx.exe -c conf \ nginx.conf). Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie auf die Server -IP zugreifen
