我在NodeJS中遇到PM2问题.没有PM2,我们总是有一些代码行,如下所示配置主进程
if(cluster.isMaster){ //master process configuration } else { //worker process configuration }
确切地说,我想将消息从工作人员发送到主人,然后,主人将向所有工作人员发回消息以通知事件.
实际上,我看到,使用PM2时,主进程配置中没有代码行运行.
非常感谢您对此问题的任何想法!
使用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
你可以在这里阅读更多关于这个主题的内容
更新:您可以尝试通过传递命令行参数来区分主服务器和从服务器.这是一个示例ecosystem.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 { // ... }