使用基本的Sails应用程序可以不间断地增加内存

时间:2016-07-10 16:56:51

标签: node.js sails.js

简而言之,我已经设置了一个带有基本控制器的无前端风帆项目,并使用loadtest命中,内存不断增加,没有稳定的迹象。我已经阅读过以前的帖子并禁用了grunt,session,socket,pubsub等。

设置:

Sails版本:v0.12.3

节点版本:v4.4.7

NPM版本:v2.15.8

重现:

创建新风帆项目

  public static class A {
  @Inject
  @Nullable
  private Example.IData data;

  @Nullable
  protected final Example.IData getData() {
     return this.data;
  }

  protected final void setData(@Nullable Example.IData <set-?>) {
     this.data = <set-?>;
  }

  public void setUp() {
     Example.INSTANCE.getGraph().inject(this);
  }

编辑.sailsrc:

sails new Project --no-frontend

添加了controllers / TestController.js:

{
  "generators": {
    "modules": {}
  },

  "hooks": {
    "session": false,
    "sockets": false,
    "pubsub": false,
    "grunt": false,
    "i18n": false
  }
}

运行负载测试:

module.exports = {
  hi: function (req, res) {
    return res.send("Hi there!");
  }
};

感谢您的帮助。

火星

3 个答案:

答案 0 :(得分:3)

我知道这可能会因为不是特定的答案或丢失链接而得到投票,但是这个主题已经被许多次通过github问题覆盖了。由于有很多变量需要考虑,他已经准备了一个故障排除指南,虽然我可以在这里复制和粘贴,但我认为这对任何时候都没有好用。这是链接:https://github.com/balderdashy/sails/issues/2779#issuecomment-209735285

如果您觉得故障排除指南中没有涵盖真正的泄漏,Mike特别提及在该项目中提出问题。我认为你只会在堆栈上得到典型的建议,所以对我来说,如果你的问题没有解决,我认为你最好直接去github。

答案 1 :(得分:3)

  1. 在负载测试之前,期间和之后进行一些堆转储。
  2. 通过加载堆转储来检查Chrome开发工具
  3. 报告泄漏!
  4. https://github.com/bnoordhuis/node-heapdump

    此外,您可以尝试通过设置超时来手动每60秒强制GC一次,以查看GC后内存是否下降(这意味着没有泄漏)。

    node --expose-gc script.js

    然后从Javascript中执行:

    setTimeout(function(){
         global.gc();
    },60000);
    

答案 2 :(得分:0)

在调查了一个月后,我仍然无法弄清楚sails.js发生了什么。我最终用基本的快速框架重写了所有内容,我很高兴我做到了。