5 Tipps zur Verbesserung der Node-Anwendungsleistung
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.
1. Implementieren Sie einen Reverse-Proxy-Server
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.
2. Statische Dateien zwischenspeichern
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; } }
3. Implementieren Sie den Node.js-Lastausgleich
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.
4. Proxy-WebSocket-Verbindung
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.
5. Implementieren Sie SSL/TLS und HTTP/2
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.
Zusammenfassung
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!

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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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





Node.js ist eine serverseitige JavaScript-Laufzeitumgebung, während Vue.js ein clientseitiges JavaScript-Framework zum Erstellen interaktiver Benutzeroberflächen ist. Node.js wird für die serverseitige Entwicklung verwendet, beispielsweise für die Entwicklung von Back-End-Service-APIs und die Datenverarbeitung, während Vue.js für die clientseitige Entwicklung verwendet wird, beispielsweise für Single-Page-Anwendungen und reaktionsfähige Benutzeroberflächen.

Node.js kann als Backend-Framework verwendet werden, da es Funktionen wie hohe Leistung, Skalierbarkeit, plattformübergreifende Unterstützung, ein umfangreiches Ökosystem und einfache Entwicklung bietet.

Um eine Verbindung zu einer MySQL-Datenbank herzustellen, müssen Sie die folgenden Schritte ausführen: Installieren Sie den MySQL2-Treiber. Verwenden Sie mysql2.createConnection(), um ein Verbindungsobjekt zu erstellen, das die Hostadresse, den Port, den Benutzernamen, das Passwort und den Datenbanknamen enthält. Verwenden Sie „connection.query()“, um Abfragen durchzuführen. Verwenden Sie abschließend Connection.end(), um die Verbindung zu beenden.

Die folgenden globalen Variablen sind in Node.js vorhanden: Globales Objekt: global Kernmodul: Prozess, Konsole, erforderlich Laufzeitumgebungsvariablen: __dirname, __filename, __line, __column Konstanten: undefiniert, null, NaN, Infinity, -Infinity

Es gibt zwei npm-bezogene Dateien im Node.js-Installationsverzeichnis: npm und npm.cmd. Die Unterschiede sind wie folgt: unterschiedliche Erweiterungen: npm ist eine ausführbare Datei und npm.cmd ist eine Befehlsfensterverknüpfung. Windows-Benutzer: npm.cmd kann über die Eingabeaufforderung verwendet werden, npm kann nur über die Befehlszeile ausgeführt werden. Kompatibilität: npm.cmd ist spezifisch für Windows-Systeme, npm ist plattformübergreifend verfügbar. Nutzungsempfehlungen: Windows-Benutzer verwenden npm.cmd, andere Betriebssysteme verwenden npm.

Die Hauptunterschiede zwischen Node.js und Java sind Design und Funktionen: Ereignisgesteuert vs. Thread-gesteuert: Node.js ist ereignisgesteuert und Java ist Thread-gesteuert. Single-Threaded vs. Multi-Threaded: Node.js verwendet eine Single-Threaded-Ereignisschleife und Java verwendet eine Multithread-Architektur. Laufzeitumgebung: Node.js läuft auf der V8-JavaScript-Engine, während Java auf der JVM läuft. Syntax: Node.js verwendet JavaScript-Syntax, während Java Java-Syntax verwendet. Zweck: Node.js eignet sich für I/O-intensive Aufgaben, während Java für große Unternehmensanwendungen geeignet ist.

Ja, Node.js ist eine Backend-Entwicklungssprache. Es wird für die Back-End-Entwicklung verwendet, einschließlich der Handhabung serverseitiger Geschäftslogik, der Verwaltung von Datenbankverbindungen und der Bereitstellung von APIs.

Serverbereitstellungsschritte für ein Node.js-Projekt: Bereiten Sie die Bereitstellungsumgebung vor: Erhalten Sie Serverzugriff, installieren Sie Node.js, richten Sie ein Git-Repository ein. Erstellen Sie die Anwendung: Verwenden Sie npm run build, um bereitstellbaren Code und Abhängigkeiten zu generieren. Code auf den Server hochladen: über Git oder File Transfer Protocol. Abhängigkeiten installieren: Stellen Sie eine SSH-Verbindung zum Server her und installieren Sie Anwendungsabhängigkeiten mit npm install. Starten Sie die Anwendung: Verwenden Sie einen Befehl wie node index.js, um die Anwendung zu starten, oder verwenden Sie einen Prozessmanager wie pm2. Konfigurieren Sie einen Reverse-Proxy (optional): Verwenden Sie einen Reverse-Proxy wie Nginx oder Apache, um den Datenverkehr an Ihre Anwendung weiterzuleiten
