Это утечка памяти? Части руля Node.js - PullRequest
0 голосов
/ 14 сентября 2018

снимки кучи

Я запускаю сборщик мусора перед каждым снимком. при тестировании с ab использование памяти увеличивается на 5 Мб / 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));
}

1 Ответ

0 голосов
/ 15 сентября 2018

Я думаю, что проблема вызвана зависимостью express-handlebars return res.send({ employees }); //return res.render("employees", { employees }); Я изменил эту строку, и тяжелые струнные объекты исчезли.

снимки кучи 2

Обновление Это на самом деле вызвано инспектором узла https://github.com/expressjs/express/issues/3751#issuecomment-424077960

Я также сделал проверку после запроса 1000, и память успешно освобождена MemoryUsage

...