node.jspm2

PM2 not starting node.js app in multiple instances


Both of these each work to start my app:

node app
pm2 start app.js

The following does not work (app not working but PM2 status shows 2 instances online) and does not log any errors:

pm2 start app.js -i 2 --watch -l log/log.log

Launching with the following process.json file also does not work (but PM2 status still shows 2 instances online) and does not log any errors:

{
  "apps" : [{
    "name"        : "app",
    "script"      : "./app.js",
    "instances"   : 0,
    "exec_mode"   : "cluster",
    "watch"       : true,
    "ignore_watch"  : ["tmp","public","images_review"],
"error_file"      : "./logs/error.log",
"out_file"        : "./logs/out.log",
    "log_date_format"  : "YYYY-MM-DD HH:mm Z",
  }]
}

Launching in fork mode with the following process.json file still does not work but does log an error.

{
  "apps" : [{
    "name"        : "app",
    "script"      : "./app.js",
    "instances"   : 0,
    "watch"       : true,
    "ignore_watch"  : ["tmp","public","images_review"],
"error_file"      : "./logs/error.log",
"out_file"        : "./logs/out.log",
    "log_date_format"  : "YYYY-MM-DD HH:mm Z",
  }]
}

The error it logs is "Error: listen EADDRINUSE :::3000". I checked and nothing is using port 3000. I also switched my node.js app to use a different port and it still gives an EADDRINUSE error for every port I try. I'm on a 2 core linode with Centos 7 running Plesk Onyx. What's going on that I'm missing?


Solution

  • Can you try running it with

    pm2 start app.js -i 0 -l log/log.log
    

    Which makes pm2 use the maximum number of cores available

    Then you can view your logs in real time using

    pm2 logs