【问题标题】:METEOR/ FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memoryMETEOR/FATAL ERROR: CALL_AND_RETRY_2 分配失败 - 进程内存不足
【发布时间】:2014-12-27 09:29:35
【问题描述】:

我正在从事流星 0.9.2.2 和陨石 0.9.2 的项目。 我正在尝试运行我现有的流星应用程序,但是, 我有一个问题卡了很长时间 “找出要使用的最佳软件包版本。这可能需要一点时间。”

最后报错:

致命错误:CALL_AND_RETRY_2 分配失败 - 进程超出 记忆

/usr/local/lib/node_modules/meteorite/lib/command.js:41
throw "Command exited with " + code + "/" + signal;
^
Command exited with null/SIGABRT

我想知道有没有办法解决这个错误?

运行meteor update时ios内存是怎样的:

memory screenshot

【问题讨论】:

  • 你的记忆力怎么样?
  • 对不起耶稣,你的意思是什么记忆?我该如何检查?
  • 大声笑你的回复让我有点笑了。在 linux 上,你可以使用 top 命令并查看顶部的信息。尝试使用谷歌搜索如何检查 linux 上的内存状态/限制。
  • 大声笑,但我有 8g 内存,至少 2g 可以免费使用,我的 ios 内存是什么样的:i.stack.imgur.com/1ZlV4.png

标签: meteor meteorite


【解决方案1】:

我添加这个是因为我遇到了类似的问题,我只是设法在流星 1.4.3.1 下解决它。

背景:

问题是meteor调用节点来构建。运行时,节点会为其运行的 V8 引擎分配一定数量的内存。在较大的项目中,为 V8 分配的默认内存不足以跟踪所有内容 - 它在接近限制时尝试进行垃圾收集,但最终空间不足并崩溃并显示错误。

如果我们只是直接运行 node,我们可以使用 --max-old-space-size 选项运行它,这将允许我们为 V8 引擎设置最大内存。问题在于,meteor 在自己的上下文中调用 node 并使用自己的选项,所以我们不能直接将标志添加到我们的流星调用中。

解决方案:

似乎meteor 1.4.3.1(可能还有其他)在调用节点时会传递TOOL_NODE_FLAGS环境变量中指定的标志和选项(其他人提到过NODE_OPTIONS,但它不适用于我的meteor-the标志只是被丢弃)

所以如果你想将节点引擎的最大内存增加到 4 GB,添加一个环境变量:

TOOL_NODE_FLAGS="--max-old-space-size=4096" 

到你正在运行流星的上下文 - 然后应该将选项传递给节点调用。

(如果您不知道在哪里设置环境变量 - 它通常会在您的 IDE 构建配置或构建脚本中。如果您想彻底检查该选项是否正在被读取,请尝试将其更改为乱码- 它应该会导致流星抛出错误)

【讨论】:

    【解决方案2】:

    Meteor 在使用内存方面非常繁重。尤其是在安装包及其依赖项时。

    作为一般经验法则,请确保您至少有 1GB 的 RAM。如果你有 512mb,你可能会遇到这样的问题。

    这是 Meteor 的一个已知问题,没有其他解决方法:https://github.com/meteor/meteor/issues/2475

    另一种选择是增加交换大小。

    【讨论】:

      猜你喜欢
      • 2018-02-05
      • 2022-10-19
      • 2020-03-31
      • 1970-01-01
      • 2016-05-29
      • 2020-04-23
      • 1970-01-01
      • 2021-04-27
      • 2014-11-23
      相关资源
      最近更新 更多