pm2 与 systemd 并传递节点参数

问题描述 投票:0回答:3

我想使用 pm2 和环境变量(如

--nouse-idle-notification
--max-old-space-size=2048
)启动节点。

但是,无论我做什么,它都没有传递节点变量。我使用 pm2 和配置文件启动我的应用程序。配置文件如下所示:

{
  "apps" : [{
    "env": {
      "NODE_PATH": "/usr/bin/node",
      "interpreter_args": "--max-old-space-size=2048 --nouse-idle-notification"
    },
    "env_development": {
      "NODE_ENV": "development"
    },
    "env_production" : {
       "NODE_ENV": "production",
       "APP_TYPE": "web"
    },
    "exec_mode"   : "fork",
    "name"        : "MyApp",
    "script"      : "/opt/myapp/app.js",
    "watch"       : false,
    "out_file"    : "/var/log/app.log",
    "error_file"  : "/var/log/app.log",
    "combine_logs": true,
    "node_args": "--max-old-space-size=2048 --nouse-idle-notification",
    "args": "--max-old-space-size=2048 --nouse-idle-notification"
  }]
}

(如你所见,我尝试以多种方式传入节点变量)

然后我启动应用程序:

pm2 restart pathtojsonfile --env production

一切都正常启动,我在代码中看到诸如“MY_APP”之类的变量。然而,现在当我用“top”查看流程时,我只看到:

node /opt/myapp/app.js

当我使用永远或手动启动应用程序时,我可以看到如下过程:

node --max-old-space-size=2048 --nouse-idle-notification /opt/myapp/app.js

pm2 只是没有显示这些节点参数还是它们真的没有传入? (pm2启动的进程使用较少的内存)

node.js ubuntu-16.04 systemd pm2 ubuntu-server
3个回答
21
投票

下面是使用 node-args 启动 pm2 的 extact 命令

pm2 start app.js --node-args="--max-old-space-size=4096"

5
投票

通过使用 "node_args": "--max-old-space-size=2048 --nouse-idle-notification" 你做了正确的事情,并且这些参数被考虑在内。

PM2 重命名进程并删除进程标题中指定的节点参数。


0
投票

我无法让它与 pm2 和 node_args 一起工作。

当我切换到设置环境变量时

     NODE_OPTIONS="--max-old-space-size=7200"

它开始工作了。

© www.soinside.com 2019 - 2024. All rights reserved.