Nginx-Reverse-Proxy-Server-Verbindungslimit und Methode zur Optimierung der Anforderungswarteschlange
Der Nginx-Reverse-Proxy-Server ist eine sehr häufige und zuverlässige Wahl, wenn Netzwerkanwendungen mit hoher Parallelität ausgeführt werden. Wenn Verbindungsbeschränkungen und Anforderungswarteschlangen jedoch nicht ordnungsgemäß konfiguriert sind, kann es auf dem Server zu Leistungsengpässen und Denial-of-Service-Problemen kommen. In diesem Artikel wird erläutert, wie Sie mit Nginx die Anzahl der Verbindungen begrenzen und die Anforderungswarteschlange optimieren können.
Verbindungslimit
Nginx kann die Anzahl der Verbindungen begrenzen, indem es den Parameter worker_connections setzt. Dieser Parameter gibt die maximale Anzahl von Verbindungen an, die jeder Arbeitsprozess gleichzeitig verarbeiten kann. Wenn die Anzahl der Verbindungen dieses Limit erreicht, werden neue Verbindungen abgelehnt.
Öffnen Sie die Nginx-Konfigurationsdatei, suchen Sie den http-Block und fügen Sie die folgende Zeile hinzu oder ändern Sie sie:
http { ... worker_processes auto; worker_connections 1024; ... }
Im obigen Beispiel ist worker_connections auf 1024 gesetzt, was bedeutet, dass jeder Arbeitsprozess 1024 Verbindungen gleichzeitig verarbeiten kann. Abhängig von der Hardwareleistung des Servers und den Anwendungsanforderungen können Sie Anpassungen basierend auf den tatsächlichen Bedingungen vornehmen. Bitte beachten Sie, dass der Wert von worker_processes auf ein Vielfaches der Anzahl der CPU-Kerne gesetzt werden sollte, um die Serverressourcen vollständig auszunutzen.
Anforderungswarteschlangenoptimierung
Wenn die Anzahl gleichzeitiger Verbindungen das worker_connections-Limit überschreitet, stellt Nginx die Anforderung in die Warteschlange und wartet auf die Verarbeitung. Sie können die Länge und das Zeitlimit der Anforderungswarteschlange anpassen, um die Möglichkeit einer Dienstverweigerung zu minimieren.
Fahren Sie mit der Bearbeitung der Nginx-Konfigurationsdatei fort und fügen Sie die folgende Zeile hinzu oder ändern Sie sie:
http { ... events { accept_mutex off; worker_connections 1024; worker_processes auto; multi_accept on; use epoll; ... } ... server { ... location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 600s; proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_buffering on; ... } ... } }
Im obigen Beispiel haben wir mehrere Optimierungen an der Anforderungswarteschlange vorgenommen. Indem wir „accept_mutex“ auf „off“ setzen, deaktivieren wir zunächst den Mutex, sodass mehrere Arbeitsprozesse gleichzeitig neue Verbindungen akzeptieren können. Zweitens setzen Sie multi_accept auf on, damit Nginx alle Anfragen in der Warteschlange so schnell wie möglich verarbeitet. Abschließend stellen wir das Timeout und die Puffergröße entsprechend den tatsächlichen Anforderungen ein.
Codebeispiel
Unten finden Sie ein Beispiel für einen einfachen Node.js-Server, der eine Backend-Anwendung simuliert.
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World! '); }); server.listen(3000, 'localhost', () => { console.log('Server running at http://localhost:3000/'); });
Im obigen Beispiel haben wir einen einfachen HTTP-Server erstellt, der den lokalen Port 3000 überwacht. Da dieser Server nur zu Demonstrationszwecken dient, gibt er lediglich eine einfache Zeichenfolge „Hello, World!“ zurück.
Um Nginx als Reverse-Proxy-Server zu verwenden, müssen Sie den obigen Beispielcode als Datei mit dem Namen server.js
speichern und den folgenden Befehl ausführen, um den Server zu starten: server.js
的文件,并执行以下命令来启动服务器:
node server.js
接下来,将以下Nginx配置保存为一个名为nginx.conf
的文件:
http { ... server { listen 80; location / { proxy_pass http://localhost:3000; } } }
通过执行以下命令来启动Nginx:
nginx -c /path/to/nginx.conf
现在,您可以通过访问http://localhost
rrreee
nginx.conf
gespeichert: rrreee
Starten Sie Nginx, indem Sie den folgenden Befehl ausführen:rrreee
Jetzt können Sie darauf zugreifen, indem Siehttp://localhost besuchen um auf Ihre Anwendung zuzugreifen. Alle Anfragen werden per Proxy und Lastausgleich über den Nginx-Server weitergeleitet. 🎜🎜Zusammenfassung🎜🎜Durch die Begrenzung der Anzahl der Verbindungen und die Optimierung der Anforderungswarteschlange können Sie hochgradig gleichzeitige Webanwendungen besser verwalten. Oben wird beschrieben, wie Nginx verwendet wird, um die Anzahl der Verbindungen zu begrenzen und die Anforderungswarteschlange zu optimieren, und es wird ein einfaches Codebeispiel für den Node.js-Server bereitgestellt. Bitte nehmen Sie entsprechend den tatsächlichen Anforderungen und der Hardwareleistung des Servers entsprechende Konfigurationsanpassungen vor. 🎜
Das obige ist der detaillierte Inhalt vonVerbindungslimit für den Nginx-Reverse-Proxy-Server und Optimierungsmethode für die Anforderungswarteschlange. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!