Performance: Load balancing between workers
HIGH IMPACT
This affects how efficiently the server handles incoming requests and distributes CPU work, impacting response time and throughput.
const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { cluster.schedulingPolicy = cluster.SCHED_RR; for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker) => { cluster.fork(); // replace dead worker }); } else { http.createServer((req, res) => { // handle request res.end(`Handled by worker ${process.pid}`); }).listen(8000); }
const cluster = require('cluster'); if (cluster.isMaster) { cluster.schedulingPolicy = cluster.SCHED_NONE; cluster.fork(); cluster.fork(); } else { require('http').createServer((req, res) => { // handle request res.end('Handled by worker'); }).listen(8000); }
| Pattern | CPU Utilization | Request Queuing | Response Time | Verdict |
|---|---|---|---|---|
| Single worker or unbalanced cluster | Low to uneven | High under load | High latency | [X] Bad |
| Balanced cluster with multiple workers | High and even | Low | Low latency | [OK] Good |