Я создал 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
, которые являются моими переменными.
Я что-то упустил? Я плохо закрываю связь? Спасибо за вашу помощь.