这是内存泄漏吗? Node.js 车把零件
Is this a memory leak ? Node.js handlebars partials
heap snapshots
我 运行 在每个快照之前进行垃圾收集器。
在使用 ab 进行测试时,似乎内存使用量增加了 5mb / 100 个请求,并且在 运行ning 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));
}
我认为问题是由 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
heap snapshots
我 运行 在每个快照之前进行垃圾收集器。 在使用 ab 进行测试时,似乎内存使用量增加了 5mb / 100 个请求,并且在 运行ning 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));
}
我认为问题是由 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