Я пытаюсь написать программу с использованием loopback - node - mysql
которой выполняются вызовы с параллельной БД (MySQL). Существует уже постоянная связь между узлом и MySQL. Когда выполняются параллельные вызовы, для выполнения запроса создаются дополнительные подключения к базе данных MySQL. Но по завершении параллельных вызовов и функций новые подключения к MySQL все еще сохраняются. Таким образом, в долгосрочной перспективе большое количество соединений связано с MySQL DB, которые не закрываются после использования.
Вот мой код
function getSubTypeIdAndOrderForNewTimelineStory(gameId, name) {
var deferred = $q.defer();
async.parallel([
function (callback) {
getTimelineStorySubType(name).then(function (timelineStorySubType) {
callback(null, timelineStorySubType.id);
}).fail(function (error) {
callback(error);
});
},
function (callback) {
getLastTimeLineStory(gameId).then(function (gameTimelineStory) {
callback(null, gameTimelineStory? gameTimelineStory.order+1: 1);
}).fail(function (error) {
callback(error);
});
}
], function (error, result) {
if(error){
deferred.reject(error);
}
else {
var response = {
gameTimelineStorySubTypeId : result[0],
order : result[1]
}
deferred.resolve(response);
}
});
return deferred.promise;
}
Поэтому либо мне нужно знать количество существующих неиспользуемых соединений, либо установить timeOut в mysql для прекращения неиспользуемых соединений.
Спасибо
В объекте dataSource вы можете найти свободные соединения, которые необходимо удалить из пула.
function removeOpenDatabaseConnections(dataSource){
var freeConections = dataSource.connector.client._freeConnections;
freeConections.forEach(function (freeConnection) {
freeConnection._removeFromPool();
});
}