Usage
import * as mod from "node:cluster";
Clusters of Node.js processes can be used to run multiple instances of Node.js
that can distribute workloads among their application threads. When process isolation
is not needed, use the worker_threads
module instead, which allows running multiple application threads within a single Node.js instance.
The cluster module allows easy creation of child processes that all share server ports.
import cluster from 'node:cluster'; import http from 'node:http'; import { availableParallelism } from 'node:os'; import process from 'node:process'; const numCPUs = availableParallelism(); if (cluster.isPrimary) { console.log(`Primary ${process.pid} is running`); // Fork workers. for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); }); } else { // Workers can share any TCP connection // In this case it is an HTTP server http.createServer((req, res) => { res.writeHead(200); res.end('hello world\n'); }).listen(8000); console.log(`Worker ${process.pid} started`); }
Running Node.js will now share port 8000 between the workers:
$ node server.js Primary 3596 is running Worker 4324 started Worker 4520 started Worker 6056 started Worker 5644 started
On Windows, it is not yet possible to set up a named pipe server in a worker.
c
Worker
A Worker
object contains all public information and method about a worker.
In the primary it can be obtained using cluster.workers
. In a worker
it can be obtained using cluster.worker
.
I
Address
No documentation available
I
Cluster
No documentation available
I
ClusterSettings
No documentation available
T
SerializationType
No documentation available