Maison  >  Article  >  interface Web  >  Résumé des méthodes pour améliorer les performances de Node.js

Résumé des méthodes pour améliorer les performances de Node.js

php中世界最好的语言
php中世界最好的语言original
2018-04-19 10:37:241313parcourir

Cette fois, je vais vous apporter un résumé des méthodes pour améliorer les performances de Node.js, et quelles sont les précautions pour améliorer les performances de Node.js. cas pratiques, jetons un coup d'oeil.

Node.js est une E/S monothread non bloquante, lui permettant de prendre en charge des milliers d'opérations simultanées. C'est exactement ainsi que NGINX résout le problème C10K. Node.js est connu pour ses performances efficaces et son efficacité de développement.

1. Implémenter un serveur proxy inverse

Node.js peut gérer de plus grandes quantités de trafic réseau plus facilement que la plupart des serveurs d'applications, mais ce n'est pas pour cela que Node.js a été conçu.

Si vous avez un site à fort trafic, la première étape pour améliorer les performances consiste à placer un serveur proxy inverse devant votre Node.js. Cela protège votre serveur Node.js d'être directement exposé au réseau et vous permet d'utiliser plusieurs serveurs d'applications pour l'équilibrage de charge et la mise en cache des fichiers statiques.

Utilisez NGINX comme proxy inverse devant un serveur existant. En tant qu'application principale de NGINX, il a été utilisé dans des milliers de sites à travers le monde.

Voici les avantages d'utiliser NGINX comme serveur proxy inverse :

Gestion simplifiée des autorisations et allocation des ports

Traitez les ressources statiques plus efficacement

Meilleure gestion des situations de crash de Node.js

Atténuer l'impact des attaques DoS

Remarque : Cet article explique comment utiliser NGINX comme serveur proxy inverse dans un environnement Ubuntu 14.04 ou CentOS, et il est efficace d'utiliser NGINX comme serveur proxy inverse devant Node.js.

2. Mise en cache des fichiers statiques

À mesure que le trafic augmente, les serveurs basés sur Node commencent à montrer de la pression. À ce stade, vous souhaiterez peut-être faire deux choses :

Utilisez plus de serveurs Node.js.

Équilibrage de charge entre plusieurs serveurs

C'est en fait très simple. NGINX est implémenté dès le début en tant que serveur proxy inverse, ce qui facilite la mise en cache et l'équilibrage de charge.

Le site Web Modulus contient un article utile qui présente l'amélioration des performances liée à l'utilisation de NGINX en tant que serveur proxy inverse Node.js. Utilisez uniquement Node.js À l’époque, le site Internet de l’auteur pouvait traiter 900 requêtes par seconde. En utilisant NGINX comme serveur proxy inverse pour traiter les fichiers statiques le site peut en gérer plus de 1 600 par seconde demandes, soit près de deux fois l’amélioration des performances.

Voici le code de configuration du site Web pour améliorer les performances mentionnées ci-dessus :

nginx
server {
listen 80;
server_name static-test-47242.onmodulus.net;
root /mnt/app;
index index.html index.htm;
loction /static/ {
try_files $uri $uri/ =404;
}
location /api/ {
proxy_pass http://node-test-45750.onmodulus.net;
}

3. Implémenter l'équilibrage de charge Node.js

L'objectif final : Node.js exécute plusieurs serveurs d'applications et équilibre la charge entre eux.

Il est plus difficile d'implémenter l'équilibrage de charge dans Node.js car Node.js permet au JavaScript côté navigateur et à Node.js côté serveur de passer json est utilisé pour l'interaction des données, ce qui signifie que le même client peut accéder à plusieurs reprises à un serveur d'applications spécifique, et il est également difficile de partager une session entre plusieurs serveurs d'applications.

Comment NGINX implémente l'équilibrage de charge sans état :

Round Robin. Les nouvelles demandes vont au serveur suivant dans la liste

Moins de connexions. Les nouvelles requêtes sont envoyées au serveur avec le moins de connexions

Hachage IP. Spécifiez le serveur en fonction de la valeur de hachage de l'adresse IP du client

. Seul IP Hash peut bénéficier aux serveurs d'applications Node.js en tant que moyen de transmettre de manière fiable les requêtes des clients vers le même serveur.

4. Connexion proxy WebSocket

Toutes les versions de HTTP sont conçues pour que le client demande activement au serveur, et WebSocket peut permettre au serveur de transmettre activement des messages au client.

Le protocole WebSocket facilite l'interaction stable entre le client et le serveur, tout en réduisant la latence d'interaction. Lorsque vous avez besoin d'une communication en duplex intégral, c'est-à-dire que le client et le serveur peuvent lancer activement des demandes de message en cas de besoin, puis utiliser WebSocket.

Le protocole WebSocket possède une interface JavaScript solide, il est donc également adapté nativement à l'utilisation de Node.js comme serveur d'applications. À mesure que le nombre de connexions augmente, il est logique d'utiliser NGINX comme proxy sur le client et le serveur Node.js pour la mise en cache des fichiers statiques et l'équilibrage de charge.

5. Implémentez SSL/TLS et HTTP/2

De plus en plus de sites Web utilisent SSL/TLS pour assurer la sécurité de l'échange d'informations. Vous pouvez également envisager de l'ajouter à votre site Web, mais si vous décidez de le faire, NGINX a deux façons de le prendre en charge :

. Vous pouvez utiliser NGINX comme proxy inverse SSL/TLS, où le serveur Node.js utilise la requête déchiffrée et renvoie le contenu non chiffré à NGINX.

L'utilisation de HTTP/2 peut compenser la surcharge de performances causée par SSL/TLS. NGINX prend en charge HTTP/2, vous pouvez donc utiliser à la fois HTTP/2 et SSL pour proxy les requêtes sans apporter de modifications à votre serveur Node.js.

Pendant la phase d'implémentation, vous devez mettre à jour l'URL dans le fichier de configuration de Node.js pour utiliser SPDY ou HTTP/2 dans votre fichier de configuration NGINX Optimisez les connexions. L'ajout de la prise en charge de HTTP/2 signifie que les navigateurs prenant en charge HTTP/2 peuvent utiliser le nouveau protocole pour interagir avec votre application, tandis que les anciens navigateurs continuent d'utiliser HTTP/1.x.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn