[英]Should node js express server clustered processes listen on multiple sockets or one?
我在节点js express服务器前面使用nginx作为反向代理。 可以使用节点集群模块创建多个侦听单个unix域套接字的服务器进程,如下所示,
const cluster = require('cluster');
const http = require('http')
function start() {
const expressServer = require('./main')
const server = http.createServer(expressServer)
server.listen(`/tmp/nginx.socket`)
}
if(cluster.isMaster) {
// Master process: fork our child processes.
const numWorkers = process.env.WEB_CONCURRENCY || 1;
for (var i = 0; i < numWorkers; i += 1) {
console.log('** Booting new worker **');
cluster.fork();
}
// Respawn any child processes that die
cluster.on('exit', function(worker, code, signal) {
console.log('process %s died (%s). restarting...', worker.id, signal || code);
cluster.fork();
});
} else {
start()
}
或者,我可以生成每个进程并让它自己监听它自己的域套接字,
const cluster = require('cluster');
const http = require('http')
function start() {
const expressServer = require('./main')
const server = http.createServer(expressServer)
server.listen(`/tmp/nginx-${process.env['WORKER_ID']}.socket`)
}
if(cluster.isMaster) {
// Master process: fork our child processes.
const numWorkers = process.env.WEB_CONCURRENCY || 1;
for (var i = 0; i < numWorkers; i += 1) {
console.log('** Booting new worker **');
cluster.fork({'WORKER_ID': (i + 1)});
}
// Respawn any child processes that die
cluster.on('exit', function(worker, code, signal) {
console.log('process %s died (%s). restarting...', worker.id, signal || code);
cluster.fork();
});
} else {
start()
}
这里有一个令人信服的理由使用多个域套接字吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.