我正在构建一个将连接到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);
});
在他们的代码中。
提前感谢您的回答。
答案 0 :(得分:3)
每次调用getConnection
时,都会创建与数据库的新(完整)连接。如果您不调用release
,则可能会导致应用程序中出现内存泄漏,因为仍然会分配连接。并且可能取决于您的数据库服务器设置,您可以达到最大总打开连接数。
在这种情况下,最好将您的连接汇集到connection pool
。调用release
将返回与池的连接,并使其可用于其他调用。
所有示例都使用release
函数释放连接。看看here