使用基本的Sails应用程序,内存不断增加

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

build立:

Sails版本:v0.12.3

节点版本:v4.4.7

NPM版本:v2.15.8

复制:

创build新的帆船项目

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!"); } }; 

运行负载testing:

 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); }); 

感谢您的帮助。

火星

我知道这可能会得到一个不是一个具体的答案或抛出链接的投票,但这个话题已经多次通过github问题迈克尔。 由于有很多变数需要考虑,他已经准备了一个问题解答指南,虽然我可以在这里复制和粘贴,但我认为这对于任何人来说都不是好用的。 所以这里是链接: https : //github.com/balderdashy/sails/issues/2779#issuecomment-209735285

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

  1. 在负载testing之前,之中和之后进行一些堆转储。
  2. 通过加载堆转储来检查Chrome开发工具
  3. 报告泄漏!

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

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

节点–expose-gc script.js

然后从Javascript内部做到这一点:

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

经过一个月的调查,我仍然无法弄清sails.js的情况。 我最终用基本的expression框架来重写所有的东西,我很高兴我做到了。