Node.js: Exécuter votre code sur plusieurs cœurs CPU

Cette documentation fait partie du guide Premiers pas. Consultez le guide complet ici : Découvrez comment déployer rapidement et en toute sécurité un service Node.js sur Stackhero.

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose un environnement Node.js cloud prêt à l'emploi, conçu pour accélérer vos déploiements :

  • Déployez en production en quelques secondes grâce à un simple git push. Aucun outil supplémentaire ni configuration manuelle n'est nécessaire.
  • Utilisez votre propre nom de domaine et profitez de certificats HTTPS automatiques, pour sécuriser votre application sans configuration additionnelle.
  • Sauvegardes automatiques, mises à jour en un clic et tarification prévisible vous permettent de vous concentrer sur le développement de vos fonctionnalités, pendant que Stackhero gère l'infrastructure.
  • Basé sur une infrastructure privée et dédiée pour garantir des performances constantes et une sécurité renforcée.

Gagnez du temps et simplifiez la gestion opérationnelle : votre application peut être en ligne sur l'hébergement Node.js cloud de Stackhero en seulement quelques minutes.

Par défaut, Node.js utilise un seul cœur et un seul thread. Pour exploiter tous les cœurs CPU disponibles, vous pouvez utiliser l'API cluster de Node.js. La documentation officielle est disponible ici : https://nodejs.org/api/cluster.html.

Voici un exemple simple qui crée un serveur HTTP utilisant tous les CPUs disponibles :

const cluster = require('cluster');
const http = require('http');
const cpusCount = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // Fork workers
  for (let i = 0; i < cpusCount; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
  });
} else {
  // Les workers partagent toute connexion TCP, ici un serveur HTTP
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

  console.log(`Worker ${process.pid} started`);
}