如何在使用PM2时configuration主进程

我在NodeJS中遇到了PM2问题。 没有PM2,我们总是会有一些如下的代码来configuration主进程

if(cluster.isMaster){ //master process configuration } else { //worker process configuration } 

确切地说,我想发送一个工人的信息给主人,然后主人会发回一个信息给所有的工作人员通知一个事件。

实际上,我看到,在使用PM2时,主进程configuration中没有任何代码行。

非常感谢关于这个问题的任何想法!

有了PM2,你通常不必使用这个构造。 通常,它看起来像下面这样:

 var cluster = require('cluster'); var http = require('http'); var os = require('os'); var numCPUs = os.cpus().length; if(cluster.isMaster){ for (var i = 0; i < numCPUs; ++i) { cluster.fork(); } } else { http.createServer(function(req, res) { res.writeHead(200); res.end("hello world"); }).listen(8080); } 

与PM2相当的是:

 var http = require('http'); http.createServer(function(req, res) { res.writeHead(200); res.end("hello world"); }).listen(8080); 

pm2 start app.js -i <number of instances>

你可以在这里阅读更多的话题

更新 :你可以尝试通过传递命令行参数来区分主从。 以下是一个ecos.json的例子:

 { "apps" : [ { "name": "Master", "script": "app.js", "args": ["master"], "instances": "1", }, { "name": "Slave", "script": "app.js", "args": ["slave"], "instances": "3" } ], ... 

然后你可以做到以下几点:

 argv = process.argv.slice(2) //stripe 'node', 'app.js' away if (argv[0] === 'master'){ // ... } else { // ... } 

PM2在内部使用“集群”来创buildsubprocess,然后自己作为主进程,并且不向外部提供任何function。 您仍然可以使用以下代码来创build过程,但是cluster.isMaster一直是错误的。

 if(cluster.isMaster){ ... cluster.fork(); ... } else { ... } 

除非你像这样开始: pm2 start -x app.js https://github.com/Unitech/pm2/issues/363

PM2的devise很好,但给初学者带来困惑。 我们尽我们所能去查看文档和Googlesearch,但很难find关于devise的任何解释。