pm2 с systemd и передачей аргумента node

Я хочу запустить узел с pm2 и переменными среды, такими как --nouse-idle-notification или --max-old-space-size=2048.

Однако, что бы я ни делал, он не передает переменные узла. Я запускаю свое приложение с mp2 и файлом конфигурации. Файл конфигурации выглядит так:

{
  "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». Однако теперь, когда я смотрю на процесс с «верхним», я вижу только:

node /opt/myapp/app.js

Когда я запускаю приложение навсегда или вручную, я вижу такой процесс:

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

pm2 просто не показывает эти аргументы узла или они действительно не передаются? (Запущенный процесс pm2 использует меньше памяти)


person Nitai    schedule 08.12.2016    source источник
comment
Включите содержимое файла systemd .service, который вы используете с pm2.   -  person Mark Stosberg    schedule 08.12.2016


Ответы (2)


Используя "node_args": "--max-old-space-size=2048 --nouse-idle-notification" вы поступили правильно, и эти аргументы учитываются.

PM2 переименовывает процесс и удаляет указанный аргумент узла в заголовке процесса.

person Unitech    schedule 08.12.2016
comment
Вы также можете сделать pm2 show <app_name>для отображения аргумента node.js - person Unitech; 09.12.2016
comment
Да. Но был действительно сбит с толку, потому что параметры не отображались в самом процессе, то есть в верхней части. - person Nitai; 09.12.2016

Ниже приведена точная команда для запуска pm2 с node-args.

pm2 start app.js --node-args="--max-old-space-size=4096"
person Rohit Parte    schedule 09.04.2020