Q30: How do you scale an Express application using the Node.js Cluster module?

Difficulty:AdvancedTopic:Scaling

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.