【问题标题】:Is this a memory leak ? Node.js handlebars partials这是内存泄漏吗? Node.js 车把部分
【发布时间】:2018-09-14 20:10:30
【问题描述】:

heap snapshots

我在每个快照之前运行垃圾收集器。 在使用 ab 进行测试时,似乎内存使用量增加了 5mb / 100 个请求,并且在运行 GC 后不会减少

看起来像是由车把部分造成的泄漏。 你怎么看 ?我该如何解决这个问题?

更新

const handlebars = require("express-handlebars"); 
const cond = require("handlebars-cond").cond; 
const dateFormat = require("handlebars-dateformat"); 
app.engine('.hbs', handlebars({ defaultLayout: null, extname: '.hbs', helpers: { cond, dateFormat   } })).set("view engine", "hbs");

路由处理程序

module.exports.allEmployees = (req, res, next) => {
    let startTime = new Date();
    Employee.findAllAndPopulateImage()
        .then(employees =>{     
            // printEmployees(employees);
            playSoundIfVolumeOn(req, "List of employees");
            winston.info("Treatment time : " + (new Date() - startTime));
            return res.render("employees", { employees });
        }).catch(handleError(next));
}

【问题讨论】:

  • 你应该分享你怀疑有内存泄漏的代码。否则我们只能猜测。
  • ` const handlebars = require("express-handlebars"); const cond = require("handlebars-cond").cond; const dateFormat = require("handlebars-dateformat"); app.engine('.hbs', handlebars({ defaultLayout: null, extname: '.hbs' , helpers: { cond, dateFormat } })).set("view engine", "hbs");`
  • 您可以编辑问题并将其添加到那里吗?应该比塞在评论中更容易阅读。此外,您可能有一些ab 正在执行的路线。看看路线的作用会有所帮助。

标签: javascript express handlebars.js


【解决方案1】:

我认为问题是由 express-handlebars 依赖引起的 return res.send({ employees }); //return res.render("employees", { employees }); 我更改了这一行,沉重的字符串对象消失了。

heap snapshots 2

更新 它实际上是由节点检查器引起的 https://github.com/expressjs/express/issues/3751#issuecomment-424077960

1000请求后我也做了验证,内存释放成功 memoryUsage

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 2013-08-12
    • 2013-01-08
    • 2013-11-12
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多