2016-12-08 9 views
0

내 머리를 벽에 부딪치게합니다. 문제는 pm2와 "--nouse-idle-notification"또는 "--max-old-space-size = 2048"과 같은 환경 변수로 노드를 시작하려고합니다.pm2 (시스템 및 전달 노드 인수 포함)

그러나 내가하는 일은 노드 변수를 전달하지 않습니다. mp2와 설정 파일로 앱을 시작합니다. 구성 파일과 같이 보인다 :

pm2 restart pathtojsonfile --env production 

모두는 다음과 같습니다

{ 
    "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" 
    }] 
} 

그때와 응용 프로그램을 시작

(당신은 내가 여러 가지 방법으로 노드 변수를 전달하려고 볼 수 있습니다) 제대로 시작하고 내 코드에서 "MY_APP"와 같은 변수를 볼 수 있습니다. 그러나, 지금은 함께 과정을 볼 때 "최고"나는 단지 참조 :

node /opt/myapp/app.js 

내가 영원히 함께 응용 프로그램을 시작할 때 또는 수동으로 내가 같은 과정을 볼 수 있습니다

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

을 PM2 그냥가요 노드 인수를 표시하지 않거나 실제로 전달되지 않았습니까? (pm2 프로세스가 메모리를 적게 차지함)

도움을 주시면 감사하겠습니다. 고맙습니다.

+0

pm2와 함께 사용중인'systemd''.service' 파일의 내용을 포함하십시오. –

답변

2

"node_args"를 사용하면 "--max-old-space-size = 2048 --nouse-idle-notification"이 올바른 결과를 얻었으며 이러한 인수가 고려되었습니다.

PM2는 프로세스의 이름을 변경하고 지정된 노드 인수를 프로세스 제목에 놓습니다.

+0

아, 그건 설명해. 고맙습니다! – Nitai

+0

또한'pm2 show '을 사용하여 node.js 인수를 표시 할 수 있습니다. – Unitech

+0

예, 그랬습니다. 그러나 매개 변수가 프로세스 자체 (예 : '상단')에 표시되지 않았기 때문에 실제로 혼란스러워했습니다. – Nitai