Performance: Master and worker processes
This concept affects how Node.js handles CPU-intensive tasks and concurrent requests, impacting server responsiveness and throughput.
Jump into concepts and practice - no test required
const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { for (let i = 0; i < numCPUs; i++) { cluster.fork(); } } else { http.createServer((req, res) => { // Worker handles request without blocking master let count = 0; for (let i = 0; i < 1e9; i++) count += i; res.end('Done ' + count); }).listen(3000); }
const http = require('http'); http.createServer((req, res) => { // Heavy computation blocking event loop let count = 0; for (let i = 0; i < 1e9; i++) count += i; res.end('Done ' + count); }).listen(3000);
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Single process heavy CPU task | N/A | N/A | N/A | [X] Bad |
| Master with multiple worker processes | N/A | N/A | N/A | [OK] Good |
const cluster = require('cluster');
const http = require('http');
if (cluster.isMaster) {
cluster.fork();
cluster.fork();
} else {
http.createServer((req, res) => {
res.end('Worker ' + process.pid);
}).listen(8000);
}http://localhost:8000?const cluster = require('cluster');
if (cluster.isMaster) {
cluster.fork();
cluster.fork();
} else {
console.log('Worker started');
}