NodeJS:如果没有关闭oracle连接会发生什么

时间:2015-05-25 14:27:33

标签: node.js oracle memory

我正在构建一个将连接到oracle数据库的NodeJS应用程序。

我想知道如果我不关闭连接会发生什么,我会多次调用fiftycent()函数?

var i=50;
function fiftycent() {
var oracledb = require('oracledb');

 oracledb.getConnection(
  {
    user          : "hr",
    password      : "welcome",
    connectString : "localhost/XE"
  },
  function(err, connection)
  {
    if (err) {
      console.error(err.message);
      return;
    }
    connection.execute(
      "SELECT department_id, department_name "
    + "FROM departments "
    + "WHERE department_id = :did",
      [180],
      function(err, result)
      {
        if (err) {
          console.error(err.message);
          return;
        }
        console.log(result.rows);
      });
  });
 i=i-1;
 if (i>0) fiftycent();
}

节点服务器在几天内运行后会导致内存故障吗?

请注意,此示例的部分内容取自https://github.com/oracle/node-oracledb,但不包括

connection.release( function(err){
 if (err) console.error(err.message);
});

在他们的代码中。

提前感谢您的回答。

1 个答案:

答案 0 :(得分:3)

每次调用getConnection时,都会创建与数据库的新(完整)连接。如果您不调用release,则可能会导致应用程序中出现内存泄漏,因为仍然会分配连接。并且可能取决于您的数据库服务器设置,您可以达到最大总打开连接数。

在这种情况下,最好将您的连接汇集到connection pool。调用release将返回与池的连接,并使其可用于其他调用。

所有示例都使用release函数释放连接。看看here