Node.js: Utilizzare tutti i core CPU disponibili

Questa documentazione fa parte della guida Prime operazioni. Consulta la guida completa qui: Scoprite come distribuire rapidamente e in sicurezza un servizio Node.js su Stackhero.

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una soluzione Node.js cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:

  • Distribuisci la tua applicazione in pochi secondi con un semplice git push.
  • Usa il tuo nome di dominio e beneficia della configurazione automatica dei certificati HTTPS per una sicurezza potenziata.
  • Goditi la tranquillità con backup automatici, aggiornamenti con un clic, e una tariffazione semplice, trasparente e prevedibile.
  • Ottieni prestazioni ottimali e una sicurezza robusta grazie a una VM privata e dedicata.

Risparmia tempo e semplificati la vita: bastano solo 5 minuti per provare la soluzione di hosting cloud Node.js di Stackhero!

Per impostazione predefinita, Node.js utilizza un solo core e un solo thread. Per sfruttare tutti i core CPU disponibili, potete utilizzare l'API cluster di Node.js. La documentazione ufficiale è disponibile qui: https://nodejs.org/api/cluster.html.

Ecco un esempio semplice che crea un server HTTP utilizzando tutte le CPU disponibili:

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 dei worker
  for (let i = 0; i < cpusCount; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
  });
} else {
  // I worker condividono qualsiasi connessione TCP, in questo caso un server HTTP
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

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