首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >节点oracledb: NJS-040:连接请求超时。请求超过了60000的queueTimeout

节点oracledb: NJS-040:连接请求超时。请求超过了60000的queueTimeout
EN

Stack Overflow用户
提问于 2020-12-09 17:26:21
回答 1查看 1.9K关注 0票数 0

我有一个使用oracledb模块连接多个oracle数据库的nodejs应用程序。这个应用程序在一个地方监控所有数据库。

但是有一个问题。我正在创建一个连接到oracle db并执行sql的文件。我正在使用这个文件连接到数据库。例如:

代码语言:javascript
运行
复制
let conections = [];
function connectToDb(dbid, connStr){
   const oracledb = require('oracledb');
   oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;
   oracledb.poolMax = 10;
   oracledb.poolMin = 1;
   oracledb.createPool(connStr).then((conn) => {
      conections[dbid] = dbid;
   });
}

function executeSql(dbid, sql, callback){
    conections[dbid].getConnection().then(conn => {
        conn.execute(qry, params, function(err, rows) {
            callback(rows);
        });
    });
}

connectToDb(1, {......});
connectToDb(2, {......});
connectToDb(3, {......});

executeSql(1, 'select * from ....', function(){...}); //response time 1 sn everthing is okey
executeSql(2, 'select * from ....', function(){...}); //response a long time. Than i am getting queue timeout error
executeSql(3, 'select * from ....', function(){...}); //it not working a while time!!
executeSql(1, 'select * from ....', function(){...}); //it not working a while time!!

//this functions are async. Please assume that there is setInterval function.

在这段代码中,一切都没问题,但是当一个数据库出现NJS-040: connection request timeout. Request exceeded queueTimeout of 60000错误时,所有的数据库都会受到这种情况的影响。

我认为这些连接并不是孤立的,我认为如果我能创建隔离连接,这个问题就会得到解决。例如,我可以使用import而不是require吗?

感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2021-08-10 01:27:57

在某些情况下,您必须:

代码语言:javascript
运行
复制
await connection.close();

否则,您实际上是在打开到数据库池的新连接,而不关闭其他连接。我自己在重新编写API时遇到了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65213985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档