在 mongodb 和节点 js 中堆内存不足

Posted

技术标签:

【中文标题】在 mongodb 和节点 js 中堆内存不足【英文标题】:Heap out of memory in mongodb and node js 【发布时间】:2019-01-21 04:35:38 【问题描述】:

自一周以来,当我加载我的网络面板的某些页面时,我在实时服务器中收到此错误,它会给我 504 网关超时,服务器会给出此错误:

当我将服务器放入 nodemon 并运行以下代码时:

nodemon --max_old_space_size=4098 server.js

它会正常工作,但我必须永远运行我的服务器。我不明白为什么我的节点进程会出现此错误

【问题讨论】:

【参考方案1】:

我认为默认节点为您提供 1.7GB 的堆供您使用。您超出了导致错误的级别。据我所知,您需要使用max_old_space_size 的命令参数来给它一个自定义堆内存限制。除了将其作为部署脚本的一部分之外,我认为没有全局方法来设置它。

我建议查看您的应用程序如何存储内存,看看您是否可以摆脱数组中的内存以及您不需要的内存。如果它与数据库相关,那么您可能一次只需要对一小块数据进行查询。

【讨论】:

【参考方案2】:

现在可以通过环境变量增加内存。像这样设置你的环境变量

export NODE_OPTIONS=--max_old_space_size=4096

这个这个answer

【讨论】:

以上是关于在 mongodb 和节点 js 中堆内存不足的主要内容,如果未能解决你的问题,请参考以下文章

React Native打包js时如何防止节点内存不足

数据结构和内存中堆和栈的区别

MongoDB 分片

java中堆和栈的区别!!!!

Java中堆内存和栈内存详解

MongoDB 分片