diff --git a/bin/www.js b/bin/www.js new file mode 100644 index 0000000..221f5ea --- /dev/null +++ b/bin/www.js @@ -0,0 +1,19 @@ +var cluster = require('cluster'); +var cleaner = require('../modules/cleaner'); +var config = require('../modules/config'); + +if (cluster.isMaster) { + var cores = require("os").cpus().length; + for (var i = cores; i > 0; i--) { + cluster.fork(); + } + + cluster.on('exit', function (worker, code, signal) { + console.error('Worker died. Rebooting a new one.'); + setTimeout(cluster.fork, 100); + }); + + setInterval(cleaner.run, config.cleaning_interval * 1000); +} else { + require('../server.js')(); +} diff --git a/server.js b/server.js index 82e2c74..99daca1 100644 --- a/server.js +++ b/server.js @@ -92,7 +92,13 @@ function requestHandler(req, res) { } } -http.createServer(requestHandler).listen(process.env.PORT || 3000); +var boot = module.exports = function () { + http.createServer(requestHandler).listen(process.env.PORT || 3000); +}; -// cleaning worker -setInterval(clean.run, config.cleaning_interval * 1000); \ No newline at end of file +if (require.main === module) { + boot(); + + // cleaning worker + setInterval(clean.run, config.cleaning_interval * 1000); +}