[英]PM2 - Incorrect memory usage reading & possible memory leak with Node.js application
[英]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.