cluster module creates child processes (workers) that share a server port.
How it works:
1const cluster = require("cluster");2const http = require("http");3const numCPUs = require("os").cpus().length;45if (cluster.isPrimary) {6 console.log(`Primary ${process.pid} is running`);7 for (let i = 0; i < numCPUs; i++) {8 cluster.fork();9 }10 cluster.on("exit", (worker) => {11 console.log(`Worker ${worker.process.pid} died`);12 cluster.fork(); // Restart13 });14} else {15 http.createServer((req, res) => {16 res.writeHead(200);17 res.end("Hello from worker " + process.pid);18 }).listen(8000);19 console.log(`Worker ${process.pid} started`);20}
Key points: