节点在并行执行时创建新的 mysql 连接,并且不会结束新连接
Node creates new mysql connections on parallel executions, and doesn't end the new connections
我正在尝试使用 loopback - node - mysql
编写一个程序,其中进行了并行 DB(MySQL) 调用。节点和 MySQL 之间已经存在持久连接。进行并行调用时,会创建与 MySQL 数据库的附加连接来满足请求。但是在并行调用和函数完成后,与 MySQL 建立的新连接仍然存在。因此,从长远来看 运行 与 MySQL 数据库建立了很多连接,这些连接在使用后并未关闭。
这是我的代码
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 中设置超时以终止未使用的连接。
谢谢
在数据源对象中,您可以找到需要从池中删除的空闲连接。
function removeOpenDatabaseConnections(dataSource){
var freeConections = dataSource.connector.client._freeConnections;
freeConections.forEach(function (freeConnection) {
freeConnection._removeFromPool();
});
}
我正在尝试使用 loopback - node - mysql
编写一个程序,其中进行了并行 DB(MySQL) 调用。节点和 MySQL 之间已经存在持久连接。进行并行调用时,会创建与 MySQL 数据库的附加连接来满足请求。但是在并行调用和函数完成后,与 MySQL 建立的新连接仍然存在。因此,从长远来看 运行 与 MySQL 数据库建立了很多连接,这些连接在使用后并未关闭。
这是我的代码
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 中设置超时以终止未使用的连接。
谢谢
在数据源对象中,您可以找到需要从池中删除的空闲连接。
function removeOpenDatabaseConnections(dataSource){
var freeConections = dataSource.connector.client._freeConnections;
freeConections.forEach(function (freeConnection) {
freeConnection._removeFromPool();
});
}