Heim Betrieb und Instandhaltung Nginx Was ist Socket-Segmentierung im Nginx-Server?

Was ist Socket-Segmentierung im Nginx-Server?

May 17, 2023 pm 08:19 PM
nginx socket

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.

Was ist Socket-Segmentierung im Nginx-Server?

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.

Was ist Socket-Segmentierung im Nginx-Server?

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.

Reuseports Benchmark-Leistungstest

Ich habe das Benchmark-Tool auf einer 36-Kern-AWS-Instanz ausgeführt, um 4 Nginx-Worker-Prozesse zu testen. Um die Auswirkungen des Netzwerks zu reduzieren, werden sowohl der Client als auch Nginx lokal ausgeführt und Nginx zurückgeben lassen ok String statt einer Datei. Ich habe drei Nginx-Konfigurationen verglichen: Standard (entspricht „accept_mutex on“), „accept_mutex off“ und „reuseport“. Wie in der Abbildung dargestellt, sind die Anforderungen pro Sekunde beim Reuseport zwei- bis dreimal so hoch wie bei den anderen, während auch die Latenz und die Standardabweichung der Latenz verringert werden.


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. Was ist Socket-Segmentierung im Nginx-Server?

Code kopieren Der Code lautet wie folgt:

Latenz (ms) Latenz Standarddev (ms) CPU-Last

Standard 15,65 26,59 0,3

accept_mutex aus 15,59 26,48 10

Wiederverwendung 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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So überprüfen Sie, ob Nginx gestartet wird So überprüfen Sie, ob Nginx gestartet wird Apr 14, 2025 pm 01:03 PM

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.

So konfigurieren Sie Nginx in Windows So konfigurieren Sie Nginx in Windows Apr 14, 2025 pm 12:57 PM

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.

So lösen Sie das Problem der Nginx Cross-Domain So lösen Sie das Problem der Nginx Cross-Domain Apr 14, 2025 am 10:15 AM

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.

Wie kann ich überprüfen, ob Nginx begonnen wird? Wie kann ich überprüfen, ob Nginx begonnen wird? Apr 14, 2025 pm 12:48 PM

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.

So starten Sie Nginx unter Linux So starten Sie Nginx unter Linux Apr 14, 2025 pm 12:51 PM

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.

So lösen Sie Nginx304 Fehler So lösen Sie Nginx304 Fehler Apr 14, 2025 pm 12:45 PM

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.

So überprüfen Sie den laufenden Status von Nginx So überprüfen Sie den laufenden Status von Nginx Apr 14, 2025 am 11:48 AM

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.

So starten Sie den Nginx -Server So starten Sie den Nginx -Server Apr 14, 2025 pm 12:27 PM

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

See all articles