Node.js: Ejecutar su código en varios núcleos de CPU

Esta documentación forma parte de la guía Primeros pasos. Consulte la guía completa aquí: Aprenda cómo desplegar un servicio Node.js en Stackhero de forma rápida y segura.

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero le ofrece un entorno Node.js en la nube listo para usar, diseñado para ayudarle a avanzar más rápido:

  • Despliegue en producción en segundos con un simple git push. No necesita herramientas adicionales ni configuraciones manuales.
  • Utilice su propio dominio y benefíciese de certificados HTTPS automáticos, manteniendo su aplicación segura sin configuraciones extra.
  • Copias de seguridad automáticas, actualizaciones con un solo clic y precios predecibles le permiten centrarse en desarrollar funcionalidades, mientras Stackhero gestiona la infraestructura por usted.
  • Basado en infraestructura privada y dedicada para un rendimiento constante y una seguridad robusta.

Ahorre tiempo y reduzca la carga operativa: puede tener su aplicación funcionando en el hosting Node.js en la nube de Stackhero en solo unos minutos.

Por defecto, Node.js utiliza un solo núcleo y un solo hilo. Para aprovechar todos los núcleos de CPU disponibles, puede utilizar la API cluster de Node.js. Puede consultar la documentación oficial aquí: https://nodejs.org/api/cluster.html.

Aquí tiene un ejemplo sencillo que crea un servidor HTTP utilizando todos los 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 {
  // Los workers comparten cualquier conexión TCP, en este caso, un servidor HTTP
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

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