Verwandte Empfehlungen: „node js-Tutorial“
„Wenn Sie kein Nginx vor Ihrem Knotenserver haben, dann machen Sie möglicherweise etwas falsch.“ – Bryan Hughes
Node.js ist die am häufigsten verwendete Sprache – Das führende Tool zum Erstellen serverseitiger Anwendungen mit JavaScript. Node.js gilt aufgrund seiner Fähigkeit, sowohl Webserver- als auch Anwendungsserverfunktionen bereitzustellen, als Schlüsseltool für die Entwicklung und Bereitstellung auf Microservices-Basis.
In der Back-End-Entwicklung kann Node.js Java und .NET ersetzen oder erweitern.
Node.js ist eine nicht blockierende Single-Threaded-I/O, die es ermöglicht, Tausende gleichzeitiger Vorgänge zu unterstützen. Genau so löst NGINX das C10K-Problem. Node.js ist für seine effiziente Leistung und Entwicklungseffizienz bekannt.
Also, was hast du falsch gemacht?
Einige Mängel in Node.js führen dazu, dass Node.js-basierte Systeme potenziellen Leistungsproblemen oder sogar Abstürzen ausgesetzt sind, was besonders offensichtlich ist, wenn der Systemverkehr schnell zunimmt. Obwohl Node.js ein gutes Tool für den Umgang mit Webanwendungslogik ist, eignet es sich nicht gut für den Umgang mit statischen Dateien wie Bildern und JavaScript-Dateien und ist auch nicht gut für den Lastausgleich zwischen mehreren Servern geeignet.
Um Node.js besser nutzen zu können, müssen Sie Funktionen wie das Zwischenspeichern statischer Dateien, Proxying, Lastausgleich, Client-Verbindungsverwaltung usw. an NGINX übergeben.
Hier sind einige Vorschläge zur Verbesserung der Leistung von Node.js:
Implementieren Sie einen Reverse-Proxy-Server
Zwischenspeichern statischer Dateien
Multi-Server-Lastausgleich
Proxy-WebSocket-Verbindungen
Implementieren Sie SSL/TLS und HTTP/2
Hinweis: Node verbessern Der schnellste Weg, die Leistung von .js-Anwendungen zu verbessern, besteht darin, Ihre Node.js-Dateien zu ändern, um die Vorteile von Multi-Core-Prozessoren zu nutzen. Sehen Sie sich diesen Artikel an, um zu erfahren, wie Sie die Vorteile von Multi-Core-CPUs auf Ihrem Server voll ausnutzen können.
Im Vergleich zu den meisten Anwendungsservern kann Node.js problemlos eine große Menge an Netzwerkverkehr verarbeiten, dies ist jedoch nicht die ursprüngliche Absicht des Node.js-Designs.
Wenn Sie eine Website mit hohem Datenverkehr haben, besteht der erste Schritt zur Verbesserung der Leistung darin, einen Reverse-Proxy-Server vor Ihrem Node.js zu platzieren. Dies schützt Ihren Node.js-Server davor, direkt dem Netzwerk ausgesetzt zu sein, und ermöglicht Ihnen die flexible Verwendung mehrerer Anwendungsserver für den Lastausgleich und das statische Datei-Caching.
Verwenden Sie NGINX als Reverse-Proxy vor einem vorhandenen Server. Als Kernanwendung von NGINX wurde es an Tausenden von Standorten auf der ganzen Welt verwendet.
Folgende sind die Vorteile der Verwendung von NGINX als Reverse-Proxy-Server:
Vereinfachte Berechtigungsverwaltung und Portzuweisung
Effizientere Verarbeitung statischer Ressourcen
Bessere Handhabung von Node.js-Absturzsituationen
Abschwächung der Auswirkungen von DoS-Angriffen
Hinweis: In diesem Artikel wird erläutert, wie NGINX als Reverse-Proxy-Server in der Ubuntu 14.04- oder CentOS-Umgebung verwendet wird und wie es effektiv ist, NGINX als Reverse-Proxy-Server vor Node zu verwenden. js.
Mit zunehmendem Datenverkehr geraten knotenbasierte Server zunehmend unter Druck. Zu diesem Zeitpunkt möchten Sie möglicherweise zwei Dinge tun:
1. Verwenden Sie mehr Node.js-Server.
2. Lastausgleich zwischen mehreren Servern
Dies ist eigentlich von Anfang an als Reverse-Proxy-Server implementiert, was die Durchführung von Caching und Lastausgleich erleichtert. Auf der Website von
Modulus gibt es einen nützlichen Artikel, der die Leistungsverbesserung durch die Verwendung von NGINX als Node.js-Reverse-Proxy-Server vorstellt. Wenn nur Node.js verwendet wird, kann die Website des Autors 900 Anfragen pro Sekunde verarbeiten. Nach der Verwendung von NGINX als Reverse-Proxy-Server zur Verarbeitung statischer Dateien kann die Website mehr als 1.600 Anfragen pro Sekunde verarbeiten, was einer Leistungsverbesserung um fast das Doppelte entspricht.
Das Folgende ist der Konfigurationscode für die Website, um die oben genannte Leistungsverbesserung zu erreichen:
nginx
server { listen 80; server_name static-test-47242.onmodulus.net; root /mnt/app; index index.html index.htm; location /static/ { try_files $uri $uri/ =404; } location /api/ { proxy_pass http://node-test-45750.onmodulus.net; } }
Das ultimative Ziel – Node.js führt mehrere Anwendungsserver aus und Läuft auf diesen Servern. Gleicht die Last zwischen ihnen aus.
Es ist schwierig, einen Lastausgleich mit Node.js zu implementieren, da Node.js es browserseitigem JavaScript und serverseitigem Node.js ermöglicht, über JSON mit Daten zu interagieren, was bedeutet, dass derselbe Client wiederholt auf einen bestimmten Anwendungsserver zugreifen kann. Außerdem ist es schwierig, Sitzungen zwischen mehreren Anwendungsservern zu teilen.
NGINX implementiert zustandslosen Lastausgleich:
Round Robin geht an den nächsten Server in der Liste.
Die wenigsten Verbindungen werden an den Server mit der geringsten Anzahl an Verbindungen gesendet Client-IP Geben Sie den Server an.
Node.js-Anwendungsserver können nur von IP-Hash profitieren, einer Methode, die Clientanforderungen zuverlässig an denselben Server weiterleiten kann.
Alle Versionen von HTTP sind so konzipiert, dass Clients den Server aktiv anfordern, und WebSocket kann es dem Server ermöglichen, aktiv Nachrichten an den Client zu senden.
Das WebSocket-Protokoll erleichtert die stabile Interaktion zwischen Client und Server und sorgt gleichzeitig für eine geringere Interaktionsverzögerung. Wenn Sie eine Vollduplex-Kommunikation benötigen, d. h. sowohl der Client als auch der Server können bei Bedarf aktiv Nachrichtenanforderungen initiieren, verwenden Sie WebSocket.
Das WebSocket-Protokoll verfügt über eine solide JavaScript-Schnittstelle und eignet sich daher auch nativ für die Verwendung von Node.js als Anwendungsserver. Da die Anzahl der Verbindungen zunimmt, ist es sinnvoll, NGINX als Proxy auf dem Client und dem Node.js-Server zum Zwischenspeichern statischer Dateien und zum Lastausgleich zu verwenden.
Immer mehr Websites verwenden SSL/TLS, um die Sicherheit der Informationsinteraktion zu gewährleisten, aber wenn Sie Wenn Sie sich dafür entscheiden, hat NGINX zwei Möglichkeiten, dies zu unterstützen:
Sie können NGINX als SSL/TLS-Reverse-Proxy verwenden, und der Node.js-Server verwendet die entschlüsselte Anfrage und gibt den unverschlüsselten Inhalt an NGINX zurück.
Die Verwendung von HTTP/2 kann den durch SSL/TLS verursachten Leistungsaufwand ausgleichen. NGINX unterstützt HTTP/2, sodass Sie HTTP/2- und SSL-Proxy-Anfragen gleichzeitig verwenden können, ohne Änderungen an Ihrem Node.js-Server vorzunehmen . .
Während der Implementierungsphase müssen Sie die URL in der Node.js-Konfigurationsdatei aktualisieren und SPDY oder HTTP/2 verwenden, um die Verbindung in Ihrer NGINX-Konfigurationsdatei zu optimieren. Das Hinzufügen von HTTP/2-Unterstützung bedeutet, dass Browser, die HTTP/2 unterstützen, das neue Protokoll zur Interaktion mit Ihrer Anwendung verwenden können, während ältere Browser weiterhin HTTP/1.x verwenden.
Dieser Blog beschreibt einige der wichtigsten Möglichkeiten zur Verbesserung der Leistung von Node.js-Anwendungen, hauptsächlich über die gemischte Verwendung von NGINX und Node.js. Da NGINX als Reverse-Proxy fungiert, können Sie statische Dateien zwischenspeichern, den Lastausgleich durchführen, WebSocket-Verbindungen als Proxy verwenden und SSL/TLS- und HTTP/2-Protokolle konfigurieren.
Der Hybrid aus NGINX und Node.js gilt als benutzerfreundliche Möglichkeit zur Erstellung von Mikroanwendungsservern und kann auch bestehende SOA-basierte Projekte wie Java- oder Microsoft.NET-Projekte flexibel erweitern. Dieser Artikel hilft Ihnen bei der Optimierung Ihrer Node.js-Anwendung. Wenn Sie Node.js verwenden, verwenden Sie es am besten mit NGINX.
Originalautor: Floyd Smith
Originallink: https://www.nginx.com/blog/5-performance-tips-for-node-js-applications/
Übersetzter Link: https://blog. maxleap.cn/zh/archives/512
Weitere programmbezogene Kenntnisse finden Sie unter: Programmierlernkurse! !
Das obige ist der detaillierte Inhalt von5 Tipps zur Verbesserung der Node-Anwendungsleistung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!