Node.js: Ihren Code auf mehreren CPU-Kernen ausführen

Diese Dokumentation ist Teil des Erste Schritte-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Erfahren Sie, wie Sie einen Node.js-Service schnell und sicher auf Stackhero bereitstellen.

👋 Willkommen in der Stackhero-Dokumentation!

Stackhero bietet Ihnen eine einsatzbereite Node.js Cloud Umgebung, die darauf ausgelegt ist, Ihre Entwicklung zu beschleunigen:

  • Deployment in die Produktion in Sekunden mit einem einfachen git push. Keine zusätzlichen Tools oder manuelle Konfiguration erforderlich.
  • Nutzen Sie Ihre eigene Domain und profitieren Sie von automatischen HTTPS-Zertifikaten, damit Ihre Anwendung ohne zusätzlichen Aufwand sicher bleibt.
  • Automatische Backups, One-Click-Updates und planbare Preise ermöglichen es Ihnen, sich auf die Entwicklung neuer Features zu konzentrieren – Stackhero übernimmt das Infrastrukturmanagement für Sie.
  • Basierend auf privater, dedizierter Infrastruktur für konstante Performance und hohe Sicherheit.

Sparen Sie Zeit und reduzieren Sie Ihren Betriebsaufwand: Ihre Anwendung läuft auf dem Node.js Cloud Hosting von Stackhero in nur wenigen Minuten.

Standardmäßig nutzt Node.js nur einen Kern und einen Thread. Um alle verfügbaren CPU-Kerne zu nutzen, empfiehlt sich die Node.js-cluster-API. Die offizielle Dokumentation finden Sie hier: https://nodejs.org/api/cluster.html.

Hier ein einfaches Beispiel, das einen HTTP-Server mit allen verfügbaren CPUs erstellt:

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 {
  // Worker teilen sich jede TCP-Verbindung, hier einen HTTP-Server
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(8000);

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