-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocess.js
More file actions
129 lines (110 loc) · 2.98 KB
/
process.js
File metadata and controls
129 lines (110 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/**
* Module dependencies.
*/
var _ = require('underscore');
var express = require('express');
var http = require('http');
var path = require('path');
var os = require('os');
var toolset = require('toolset');
var mime = require('mime');
var request = require('request');
// Middlewares
var flash = require('express-flash')
var serveFavicon = require('serve-favicon');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var multipart = require('connect-multiparty');
var methodOverride = require('method-override');
var expressSession = require('express-session');
var errorHandler = require('errorhandler');
var expressCookieauth = require('express-cookieauth');
var compression = require('compression');
var options = _.extend({
env: "dev",
debug_mode: false,
port: 80
},processArgs());
options.threads = Math.min(options.threads, os.cpus().length);
options.cores = os.cpus().length;
var app = express();
// all environments
app.set('port', process.env.PORT || options.port);
app.set('env', options.env);
app.set('views', __dirname + 'templates');
app.set('view engine', 'twig');
app.set('view cache', false);
app.disable('view cache');
app.use(flash());
app.use(serveFavicon(__dirname + '/favicon.ico'));
//app.use(morgan('dev'));
app.use(compression()); // Gzip compression
app.use(cookieParser());
//app.use(bodyParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
//app.use(busboy());
app.use(methodOverride());
app.use("/static", express.static(__dirname+'/static'));
// development only
if ('dev' == app.get('env')) {
app.use(errorHandler());
}
// Start the server
http.createServer(app).listen(app.get('port'), function(){
console.log('Server listening on port ' + app.get('port'));
});
app.get("/", function(req, res){
res.set("Content-Type", "application/json");
res.status(200).send(JSON.stringify({
name: "Scaling Test",
hostname: os.hostname(),
type: os.type(),
platform: os.platform(),
arch: os.arch(),
uptime: os.uptime(),
cpus: os.cpus(),
networkInterfaces: os.networkInterfaces()
}, null, 4));
});
function processArgs() {
var i;
var args = process.argv.slice(2);
var output = {};
for (i=0;i<args.length;i++) {
var l1 = args[i].substr(0,1);
if (l1 == "-") {
if (args[i+1] == "true") {
args[i+1] = true;
}
if (args[i+1] == "false") {
args[i+1] = false;
}
if (!isNaN(args[i+1]*1)) {
args[i+1] = args[i+1]*1;
}
output[args[i].substr(1)] = args[i+1];
i++;
}
}
return output;
};
/************************************/
/************************************/
/************************************/
// Process Monitoring
setInterval(function() {
process.send({
memory: process.memoryUsage(),
process: process.pid
});
}, 1000);
// Crash Management
if (!options.debug_mode) {
process.on('uncaughtException', function(err) {
console.log("err",err);
});
}