Node.js 11 MB数据库的NodeJ堆内存不足

Node.js 11 MB数据库的NodeJ堆内存不足,node.js,heap-memory,coredump,Node.js,Heap Memory,Coredump,我有一个MongoDB集合,包含14000个文档、100000个子文档和11MB的BSON备份。我无法在其上运行此NodeJS代码: VisitorSchema.statics.getAllVisitors = async function() { try { // Return all users. return Visitor.find() .exec(); } catch (err) { console.log(err); } }; Vis

我有一个MongoDB集合,包含14000个文档、100000个子文档和11MB的BSON备份。我无法在其上运行此NodeJS代码:

VisitorSchema.statics.getAllVisitors = async function() {
  try {
    // Return all users.
    return Visitor.find()
      .exec();
  } catch (err) {
    console.log(err);
  }
};

VisitorSchema.statics.checkRecentVisits = async function() {
  console.log("Starting...");
  let uvs = await this.getAllVisitors();
  console.log("Loaded!");
}
脚本运行和抛出需要几秒钟:

Starting...

<--- Last few GCs --->
fa[1355:0x00]    12006 ms: Mark-sweep 255.4 (257.0) -> 254.7 (257.2) MB, 507.2 / 0.0 ms  (+ 0.0 ms in 12 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 529 ms) (average mu = 0.124, current mu = 0.042) allocation fail[1355:0x39dd420]    12456 ms: Mark-sweep 255.6 (257.2) -> 255.0 (257.5) MB, 371.5 / 0.0 ms  (+ 58.6 ms in 13 steps since start of marking, biggest step 17.2 ms, walltime since start of marking 451 ms) (average mu = 0.087, current mu = 0.046) allocation fa

<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 0x00]

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

...

Aborted (core dumped)
正在启动。。。
fa[1355:0x00]12006毫秒:标记扫描255.4(257.0)->254.7(257.2)MB,507.2/0.0毫秒(+0.0毫秒,自标记开始后的12个步骤,最大步骤0.0毫秒,自标记开始后的壁时间529毫秒)(平均mu=0.124,当前mu=0.042)分配失败[1355:0x39dd420]12456毫秒:标记扫描255.6(257.2)->255.0(257.5)MB,371.5/0.0毫秒(+58.6毫秒,自标记开始后分13步,最大步骤17.2毫秒,自标记开始后的墙时间451毫秒)(平均mu=0.087,当前mu=0.046)分配fa
==JS堆栈跟踪=========================================
0:ExitFrame[pc:0x00]
致命错误:无效的标记压缩接近堆限制分配失败-JavaScript堆内存不足
...
中止(堆芯转储)
提到1400万条记录的堆失败,我离这还很远


如何调试问题或解决问题?

您可以通过以下方式将任务的堆大小增加一倍:

NODE_OPTIONS=--max_old_space_size=8192 node task.js
过去,如果使用Windows,我使用:

此外,如果您使用的是最新版本的node,您可能希望阅读以下内容:

也请检查此项:

我的机器有512 MB的RAM,默认值似乎是1400 MB,因此将其增加到8192可能没有效果。因此我认为我需要增加机器的RAM或优化代码以避免如此大的内存堆。你需要新的PC…我使用32gb的RAM