Node在并行执行时创建新的mysql连接,并且不终止新连接

时间:2018-08-02 10:06:30

标签: mysql node.js mysql-connector loopback

我正在尝试使用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来终止未使用的连接。 谢谢

1 个答案:

答案 0 :(得分:0)

在dataSource对象中,您可以找到需要从池中删除的空闲连接。

function removeOpenDatabaseConnections(dataSource){
 var freeConections = dataSource.connector.client._freeConnections;
 freeConections.forEach(function (freeConnection) {
  freeConnection._removeFromPool();
 }); 
}