简而言之,我已经设置了一个带有基本控制器的无前端风帆项目,并使用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!");
}
};
感谢您的帮助。
火星
答案 0 :(得分:3)
我知道这可能会因为不是特定的答案或丢失链接而得到投票,但是这个主题已经被许多次通过github问题覆盖了。由于有很多变量需要考虑,他已经准备了一个故障排除指南,虽然我可以在这里复制和粘贴,但我认为这对任何时候都没有好用。这是链接:https://github.com/balderdashy/sails/issues/2779#issuecomment-209735285
如果您觉得故障排除指南中没有涵盖真正的泄漏,Mike特别提及在该项目中提出问题。我认为你只会在堆栈上得到典型的建议,所以对我来说,如果你的问题没有解决,我认为你最好直接去github。答案 1 :(得分:3)
https://github.com/bnoordhuis/node-heapdump
此外,您可以尝试通过设置超时来手动每60秒强制GC一次,以查看GC后内存是否下降(这意味着没有泄漏)。
node --expose-gc script.js
然后从Javascript中执行:
setTimeout(function(){
global.gc();
},60000);
答案 2 :(得分:0)
在调查了一个月后,我仍然无法弄清楚sails.js发生了什么。我最终用基本的快速框架重写了所有内容,我很高兴我做到了。