javascript NodeJS pm2最大内存限制

yi0zb3m4  于 2023-02-02  发布在  Java
关注(0)|答案(3)|浏览(396)

我正在使用pm2和node js。我想做的是为一个应用程序设置一个最大内存限制。我的开发服务器的限制是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"
     ]
   }
 ]

}

wqnecbli

wqnecbli1#

我使用pm2直接运行node.js脚本,下面的代码对我很有效:

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

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

kx1ctssn

kx1ctssn2#

您必须使用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"
     ]
   }
 ]
}
83qze16e

83qze16e3#

您说您已经尝试了--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"]}

相关问题