繁体   English   中英

节点js表示服务器集群进程应该监听多个套接字还是一个?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM