我正在尝试使用loopback - node - mysql
编写程序,其中进行了并行DB(MySQL)调用。节点和MySQL之间已经存在持久连接。进行并行调用时,将创建与MySQL DB的附加连接来满足请求。但是,在并行调用和函数完成后,与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;
}
所以我要么需要知道现有未使用的连接的数量,要么在mysql中设置一个timeOut来终止未使用的连接。 谢谢
答案 0 :(得分:0)
在dataSource对象中,您可以找到需要从池中删除的空闲连接。
function removeOpenDatabaseConnections(dataSource){
var freeConections = dataSource.connector.client._freeConnections;
freeConections.forEach(function (freeConnection) {
freeConnection._removeFromPool();
});
}