node在并行执行时创建新的mysql连接,并且不结束新的连接

qncylg1j  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(259)

我正试着用 loopback - node - mysql 其中并行db(mysql)调用。node和mysql之间已经存在持久连接。当进行并行调用时,将创建到mysql db的附加连接以满足请求。但是在并行调用和函数完成之后,对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中设置一个超时来终止未使用的连接。
谢谢

kadbb459

kadbb4591#

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

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

相关问题