Node.js sur les ordinateurs multicœurs
La popularité actuelle de Node.js a soulevé des doutes quant au fait qu'il ne cible que des processus uniques et Les threads sont optimisés, alors comment s'adaptent-ils aux processeurs multicœurs et aux serveurs multi-CPU ?
Le monothreading limite-t-il vraiment les performances ?
Bien que les serveurs monothread soient assez rapides, sous une charge élevée, nous devons tirer pleinement parti des processeurs multicœurs. La parallélisation des tâches est une tendance actuelle dans l’accélération des applications.
Node.js combiné avec des multicœurs
Node.js s'adapte aux ordinateurs multicœurs. Il est implémenté via les méthodes suivantes :
1. Fractionnement des processus
Pour les tâches informatiques lourdes telles que l'encodage d'images, Node.js peut lancer des processus enfants ou fournir un support à autres processus de travail Envoyer un message. Dans cette conception, un thread gère le flux des événements, tandis que N processus effectuent des tâches de calcul lourdes, en utilisant pleinement les 15 autres processeurs.
2. Parallélisme multi-serveurs
Pour la mise à l'échelle des services Web, plusieurs serveurs Node.js doivent être exécutés sur un seul ordinateur, avec un cœur par serveur et un trafic de requêtes amorti. . Cela offre une excellente affinité CPU et fait évoluer le débit de manière presque linéaire à mesure que le nombre de cœurs augmente.
Utilisez le module cluster pour faire évoluer le débit du service Web
À partir de la version 6.0.X, Node.js inclut directement le module cluster, ce qui facilite sa configuration plusieurs nœuds Processus de travail pouvant écouter sur un seul port. Notez que ceci est différent de l'ancien module "cluster" learnboost disponible via npm.
if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); } } else { http.Server(function(req, res) { ... }).listen(8000); }
Les processus de travail seront en compétition pour accepter de nouvelles connexions, et le processus le moins chargé a plus de chances de gagner. Cela fonctionne bien et adapte bien le débit sur les machines multicœurs.
Optimiser l'équilibrage de charge
En plus d'utiliser le module cluster, les étapes suivantes peuvent également contribuer à améliorer encore l'équilibrage de charge multicœur :
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!