Inhaltsverzeichnis
1. Implementieren Sie einen Reverse-Proxy-Server" >1. Implementieren Sie einen Reverse-Proxy-Server
2. Statische Dateien zwischenspeichern " > 2. Statische Dateien zwischenspeichern
3. Implementieren Sie den Node.js-Lastausgleich" >3. Implementieren Sie den Node.js-Lastausgleich
4. Proxy-WebSocket-Verbindung " >4. Proxy-WebSocket-Verbindung
5. Implementieren Sie SSL/TLS und HTTP/2" > 5. Implementieren Sie SSL/TLS und HTTP/2
Zusammenfassung
Heim Web-Frontend js-Tutorial 5 Tipps zur Verbesserung der Node-Anwendungsleistung

5 Tipps zur Verbesserung der Node-Anwendungsleistung

Dec 03, 2020 pm 06:05 PM
nodejs

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.

5 Tipps zur Verbesserung der Node-Anwendungsleistung

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;
  }
}
Nach dem Login kopieren

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:

  1. 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.

  2. 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.

5 Tipps zur Verbesserung der Node-Anwendungsleistung

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!

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

Video Face Swap

Video Face Swap

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

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)

Der Unterschied zwischen NodeJS und VueJS Der Unterschied zwischen NodeJS und VueJS Apr 21, 2024 am 04:17 AM

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.

Ist NodeJS ein Backend-Framework? Ist NodeJS ein Backend-Framework? Apr 21, 2024 am 05:09 AM

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.

So verbinden Sie NodeJS mit der MySQL-Datenbank So verbinden Sie NodeJS mit der MySQL-Datenbank Apr 21, 2024 am 06:13 AM

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.

Was sind die globalen Variablen in NodeJS? Was sind die globalen Variablen in NodeJS? Apr 21, 2024 am 04:54 AM

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

Was ist der Unterschied zwischen den Dateien npm und npm.cmd im Installationsverzeichnis von nodejs? Was ist der Unterschied zwischen den Dateien npm und npm.cmd im Installationsverzeichnis von nodejs? Apr 21, 2024 am 05:18 AM

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.

Gibt es einen großen Unterschied zwischen NodeJS und Java? Gibt es einen großen Unterschied zwischen NodeJS und Java? Apr 21, 2024 am 06:12 AM

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.

Ist NodeJS eine Back-End-Entwicklungssprache? Ist NodeJS eine Back-End-Entwicklungssprache? Apr 21, 2024 am 05:09 AM

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.

So stellen Sie das NodeJS-Projekt auf dem Server bereit So stellen Sie das NodeJS-Projekt auf dem Server bereit Apr 21, 2024 am 04:40 AM

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

See all articles