当前位置:  开发笔记 > 编程语言 > 正文

如何在使用PM2时配置主进程

如何解决《如何在使用PM2时配置主进程》经验,为你挑选了1个好方法。

我在NodeJS中遇到PM2问题.没有PM2,我们总是有一些代码行,如下所示配置主进程

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

确切地说,我想将消息从工作人员发送到主人,然后,主人将向所有工作人员发回消息以通知事件.

实际上,我看到,使用PM2时,主进程配置中没有代码行运行.

非常感谢您对此问题的任何想法!



1> stefkin..:

使用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 {
  // ...
}

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有