流星失忆

时间:2015-09-06 09:19:51

标签: node.js meteor out-of-memory

我正在使用meteor来制作报废引擎,我必须做一个HTTP GET请求,这会发给我一个xml,但这个xml大于400 ko。

我得到一个“内存不足”的例外。

result =Meteor.http.get 'http://SomeUrl.com'
  

致命错误:JS分配失败 - 处理内存不足

有一种方法可以增加变量的内存限制吗?

6 个答案:

答案 0 :(得分:3)

如果您正在开发Windows

找到meteor.bat /APPData/Local/.meteor/packages/meteor-tool/<build-tool-version>/

编辑调用node.exe的批处理文件的最后一行并更改为

"%~dp0\dev_bundle\bin\node.exe" --max-old-space-size=2048 "%~dp0\tools\main.js" %*

希望这有帮助

答案 1 :(得分:3)

我正在开发Windows并遇到同样的错误。在我的情况下,是由大量的console.log语句引起的。我禁用了日志语句,并再次正常工作。

答案 2 :(得分:3)

可以增加使用meteor生成的节点应用程序可用的内存。

我没有成功在meteor脚本中调用的节点实例中使用--max-old-space-size标志,也没有尝试按照gatolgaj

但是,设置环境变量NODE_OPTIONS="--max-old-space-size=8192"对我有用。

我在这个帖子中看到了它:https://groups.google.com/forum/#!topic/meteor-talk/C5oVNqm16MY

答案 3 :(得分:1)

您需要增加服务器上的内存容量,例如:启用swap memory。要了解如何,假设你在Linux上,你可以f.ex.阅读DigitalOcean的guide on enabling swap memory on Ubuntu 14.04

我不知道有什么方法可以处理Node内存不足的情况,除非您可以将GET请求分离到子进程中,以便在内存不足时整个服务器不会崩溃

要增加Node的内存限制,您可以使用Node的--max_old_space_size选项。

答案 4 :(得分:1)

使用Meteor 1.1.0.3在Windows 10上相同:

C:\Users\Cees.Timmerman\AppData\Local\.meteor\packages\meteor-tool\1.1.4\mt-os.windows.x86_32\tools\fiber-helpers.js:162
    }).run();
       ^
FATAL ERROR: Evacuation Allocation failed - process out of memory

Resolved通过将settings.json 2.1.0(var level = Meteor.settings.log_level)等记录程序包内部使用的Winston中的控制台日志级别设置为“警告”而不是“调试”

答案 5 :(得分:1)

我知道这个问题已经解决并且有点陈旧,但我想分享一下我的经验。经过一番研究,我刚刚更新了我的Meteor版本。看起来他们最近更加关注内存不足的错误。因此,我鼓励您更新到新的Meteor版本。