Skip to content

Instantly share code, notes, and snippets.

@netroy
Created November 5, 2011 11:30
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save netroy/1341411 to your computer and use it in GitHub Desktop.
Save netroy/1341411 to your computer and use it in GitHub Desktop.
Using cluster to scale existing Express/Connect apps
var cluster = require('cluster'),
app = require('./app');
var workers = {},
count = require('os').cpus().length;
function spawn(){
var worker = cluster.fork();
workers[worker.pid] = worker;
return worker;
}
if (cluster.isMaster) {
for (var i = 0; i < count; i++) {
spawn();
}
cluster.on('death', function(worker) {
console.log('worker ' + worker.pid + ' died. spawning a new process...');
delete workers[worker.pid];
spawn();
});
} else {
app.listen(process.env.app_port || 5000);
}
var express = require('express'),
app = module.exports = express.createServer();
app.configure(function(){
app.use(app.router);
});
app.get('/', function(req, resp){
resp.writeHead(200, "Content-type: text/json");
resp.write("Hello Node");
resp.end();
});
if (!module.parent) {
app.listen(process.env.app_port || 5000);
}
var connect = require('connect'),
app = module.exports = connect.createServer();
app.use(connect.router(function(router){
router.get("/", function(req, resp){
resp.writeHead(200, "Content-type: text/json");
resp.write("Hello Node");
resp.end();
});
}));
if (!module.parent) {
app.listen(process.env.app_port || 5000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment