MS SQL - Узел - Утечка памяти - PullRequest
0 голосов
/ 09 января 2020

Я создал Node API, который запрашивает сервер Microsoft SQL. Я использую Node 10.13.0 с MS SQL 5.1.0. Я сделал модуль для простого выполнения запроса.

module.exports = async function executeQuery(query, params) {
    return new Promise((resolve, reject) => {
        new sql.ConnectionPool(config).connect().then(pool => {
            let request = pool.request();
            if (typeof params != "undefined") {
                Object.keys(params).forEach(function(key) {
                    request.input(key, params[key]);
                });
            }
            return request.query(query);
        }).then(result => {
            sql.close();
            resolve(result.recordset);
        }).catch(err => {
            reject(err);
            sql.close();
        });
    });
};

Я обнаружил, что у меня была утечка памяти, потому что память продолжает увеличиваться, когда люди используют Node API. Я сделал несколько снимков кучи с DevTools, использовал --inspect. Я думаю, что это связано с моим модулем MS SQL, который запрашивает мой сервер Microsoft SQL. Я не знаю много о Node DevTools в Chrome, но вижу, что () в (закрытие) очень много. Все они содержат один и тот же объект, и внутри него есть ссылка pool in ConnectionPool, которые являются моими переменными.

Я что-то упустил? Я плохо закрываю связь? Спасибо за вашу помощь.

...