如何增加nodejs的默认内存?

ani*_*nil 22 node.js

在服务器启动时将2GB(大约)数据从mongodb导出到redis,然后将错误视为FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory.

然后使用此命令启动服务器node --max-old-space-size=4076 server.js并正常工作.但需要在nodejs应用程序中进行配置,以便节点服务器始终以4gb内存启动.请帮我解决这个问题?谢谢.

Jam*_*air 25

一个选项:npm启动脚本

https://docs.npmjs.com/misc/scripts

这些将添加到"scripts"部分下的package.json中

{
  //other package.json stuff

  "scripts":{
     "start": "node --max-old-space-size=4076 server.js"
  } 

}
Run Code Online (Sandbox Code Playgroud)

然后运行它调用npm start而不是键入node + args +执行点.

注意:如果您将其命名为start之外的其他内容,npm run [yourScriptNameHere]则将是运行它的命令

这是一个比尝试重新配置节点默认使用4gb更好的选择(甚至不知道它是否可能tbh).它通过使用烘焙方法使您的配置可移植,并允许将来遇到您的代码的其他人了解这是一个需要.

  • @InzamamMalik - 您可以通过保存以下环境变量在系统上全局执行此操作 - `NODE_OPTIONS=--max-old-space-size=4096` (2认同)

M T*_*ead 14

节点SomeScript.js --max-old-space-size = 8192

  • 该标志必须位于第一位,否则不起作用。应该是“node --max-old-space-size=8192 SomeScript.js”。请参阅/sf/answers/3063071441/ (4认同)

Kev*_*per 8

您还可以NODE_OPTIONS在运行npm脚本而不是node自身时进行设置:

"scripts": {
  "start": "NODE_OPTIONS=--max-old-space-size=4096 serve",
},
Run Code Online (Sandbox Code Playgroud)


小智 5

有两种方法可以解决此问题,第一种方法是为您的应用程序显式设置内存大小,上面已经回答了。另一种方法是为节点全局设置内存大小 - 这是通过创建一个环境变量来完成的,其中

variable name=NODE_OPTIONS
Run Code Online (Sandbox Code Playgroud)

variable value=--max-old-space-size=4096
Run Code Online (Sandbox Code Playgroud)