Q30: How do you scale an Express application using the Node.js Cluster module?
Node.js runs single-threaded by default. The Cluster module forks multiple Express worker processes across all available CPU cores, sharing the master server port.
Multi-Core Scaling via Node Cluster
const cluster = require('cluster');
const os = require('os');
const app = require('./app');
if (cluster.isMaster) {
const numCPUs = os.cpus().length;
console.log(`Master process running. Forking ${numCPUs} workers...`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork(); // Fork worker processes
}
} else {
app.listen(3000); // Worker process listens on shared port 3000
}💡 Master process forks workers across CPU cores; operating system load balances connections across workers.
Key Takeaways
- Utilizes all available server CPU cores, increasing request processing capacity.
- Requires stateless session management (e.g., Redis) since worker processes operate isolated memory spaces.