繁体   English   中英

Node JS pm2最大限制memory

[英]Node JS pm2 maximum memory limit

我正在使用 pm2 和 node.js。我想做的是为应用程序设置最大 memory 限制。 我的开发服务器的限制是在两个应用程序之间分配 500mb。 理想情况下,我想将其限制为 200mb。 我需要这个限制作为应用程序的硬限制,并且如果超过它就不会像 pm2 命令“max_memory_restart”那样重新启动应用程序。 我也尝试过使用 --max_old_space_size 命令但没有成功。 有什么办法吗?

示例 pm2 json 文件

{
  "apps": [
   {
     "name": "Sample",
     "script": "runit.js",
     "watch": false,
     "cwd": "xxxxxx",
     "env": {
       "NODE_TLS_REJECT_UNAUTHORIZED": '0',
       "NODE_ENV": "local_public",
       "PORT": 3000,
       "PROXY_PORT": 4000,
     },
     "args": [
       "--max_old_space_size=200"
     ]
   }
 ]

}

我使用 pm2 直接运行 node.js 脚本,这段代码对我有用:

pm2 start file.js --max-memory-restart 100M

希望 max-memory-restart 参数对你有用

您必须使用node_args而不是args 此外,为了安全起见,您可以手动设置max_memory_restart此选项使您能够在崩溃之前重新启动进程。

{
  "apps": [
   {
     "name": "Sample",
     "script": "runit.js",
     "watch": false,
     "cwd": "xxxxxx",
     "env": {
       "NODE_TLS_REJECT_UNAUTHORIZED": '0',
       "NODE_ENV": "local_public",
       "PORT": 3000,
       "PROXY_PORT": 4000,
     },
     "max_memory_restart": "180",
     "node_args": [
       "--max_old_space_size=200"
     ]
   }
 ]
}

您说您已经尝试过 --max-old-space-size 命令但没有成功。

看起来您试图通过“args”pm2 命令传递它。 由于一个主要原因,这不起作用。 它需要被明确告知将命令传递给它正在处理的 nodeJS 进程。

--node-args= 允许您在使用 PM2 时传递典型的 NodeJS 命令。 这里有两种传递它的方法。 首先是通过直接的 package.json 文件脚本(将其留给其他人以防万一):

{
"start:prod": "pm2 start server.js --node-args='--max-old-space-size=200'"
}

或者正如上面的评论者通过 pm2 配置文件发布的那样:

{"node_args": ["--max-old-space-size=200"]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM