【问题标题】:Memory increase non-stop with basic Sails application使用基本 Sails 应用程序不断增加内存
【发布时间】:2016-07-10 16:56:50
【问题描述】:

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

设置:

帆版:v0.12.3

节点版本:v4.4.7

NPM 版本:v2.15.8

转载:

创建新的 Sails 项目

sails new Project --no-frontend

编辑.sailsrc:

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

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

添加了控制器/TestController.js:

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

运行负载测试:

var loadtest = require('loadtest');

var host = 'http://localhost:1337';

var options = {
    url: host + '/test/hi',
    requestsPerSecond: 50
};

loadtest.loadTest(options, function(error, result)
{
    if (error)
    {
        return console.error('Got an error: %s', error);
    }
    console.log('Tests run successfully: '+result);
});

感谢您的帮助。

火星

【问题讨论】:

  • 你知道如何分析 nodejs 应用程序吗?

标签: node.js sails.js


【解决方案1】:

我知道这可能会因为不是特定答案或丢弃链接而遭到反对,但 Mike 已通过 github 问题多次讨论过这个主题。由于要考虑的变量太多,他准备了一个故障排除指南,虽然我可以在这里复制和粘贴,但我认为这不是很好地利用任何人的时间。所以这里是链接:https://github.com/balderdashy/sails/issues/2779#issuecomment-209735285

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

【讨论】:

    【解决方案2】:
    1. 在负载测试之前、期间和之后进行几次堆转储。
    2. 通过加载堆转储在 Chrome 开发工具中检查
    3. 报告泄漏!

    https://github.com/bnoordhuis/node-heapdump

    另外,您可以尝试强制每 60 秒进行一次 GC,或者通过设置超时手动执行其他操作,以查看 GC 后内存是否下降(这意味着没有泄漏)。

    节点 --expose-gc script.js

    然后在 Javascript 中执行以下操作:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        • 2014-09-11
        • 2012-01-11
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        相关资源
        最近更新 更多