【问题标题】:Meteor Out of Memory流星内存不足
【发布时间】:2015-12-02 00:30:41
【问题描述】:

我正在使用流星制作报废引擎,我必须执行 HTTP GET 请求,这会向我发送一个 xml,但这个 xml 大于 400 ko。

我得到一个异常“内存不足”。

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

致命错误:JS 分配失败 - 进程内存不足

有没有办法增加变量的内存限制?

【问题讨论】:

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


    【解决方案1】:

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

    我没有成功在流星脚本中调用的节点实例中使用 --max-old-space-size 标志,也没有按照 gatolgaj 的建议尝试在流星工具的脚本中更改它

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

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

    【讨论】:

      【解决方案2】:

      我知道这个问题已经解决并且有点老了,但我想分享我的经验。经过一番研究,我刚刚更新了我的 Meteor 版本。似乎他们最近更加关注内存不足错误。所以我会鼓励你更新到新的 Meteor 版本。

      【讨论】:

        【解决方案3】:

        在使用 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 中的“调试”,由 Winston 2.1.0 (var level = Meteor.settings.log_level) 等记录器包内部使用。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 抱歉回复晚了,其实我在Linux上也是这样,很多时间都是因为日志输出太大造成的。
          • 我从来没有想过要尝试这个,但它成功了! (Windows 上的 Meteor 1.2.1)
          【解决方案5】:

          如果你是在 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" %*

          希望对你有帮助

          【讨论】:

          • 以上内容对 Meteor 1.2 没有帮助。我找到了另一种解决方案,但如果有人必须以这种方式解决它,看起来真的很接近!注意:在 Meteor 1.2 中,您调用的是 \tools\index.js 而不是 \tools\main.js
          【解决方案6】:

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

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

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

          【讨论】:

          • 感谢回复。但是我的交换已经启用。而且我有 4gB 的内存,所以我想我得到它是因为流星使用节点和节点有内存限制。
          • @Logoosse 您是否尝试过设置--max-old-space-size 以增加可用内存量?直到现在我自己才知道这个设置。
          • 我做了,但是meteor不是node.js而是只用node.js,所以命令不起作用。
          • @Logoosse 我实际上并不确定如何通过 Meteor 传递 Node 选项,但至少在我的服务器上(不是本地)我直接使用 Node(应用程序已被取消)所以在这种情况下我可以通过我想要的任何选项。
          • 我现在在 Meteor 论坛上问过,如何通过 Meteor 传递此选项。
          猜你喜欢
          • 1970-01-01
          • 2016-10-10
          • 2019-05-13
          • 1970-01-01
          • 1970-01-01
          • 2019-07-31
          • 2014-06-04
          • 2020-05-17
          • 2015-05-31
          相关资源
          最近更新 更多