我正在运行带有dashDB作为后端的Node.js应用程序。我使用ibm_db节点包作为连接到dashDB的驱动程序。 Node.js和dashDB部署在IBM Bluemix中。 我没有使用ibm_db包提供的连接池选项。我们有后台作业(来自node-cron包的cron作业),它经常查询dashDB(比如每2分钟一次)进行CRUD操作。前30分钟,没有问题。 30-45分钟后,当我们尝试建立连接时,我们开始低于错误。
我们从数据库获得结果后立即打开连接并关闭连接。
以下是我们用于打开和关闭连接的代码:
var dashDB = require("ibm_db")
function openConnection(next) {
try {
dashDB.open(connectionString, function(err, connection) {
if (err) return dashDBError('openConnection', err)
console.log('DB: openConnection.'.blue)
connectionsCount ++
next(connection)
});
} catch(err) {
console.error('CAUGHT OPEN CONNECTION ERROR')
console.log(err)
next({ error: err })
}
}
//Close dashDB connection
function closeConnection(connection) {
connection.close(function(err) {
if (err) return dashDBError('closeConnection', err)
connectionsCount --
console.log('DB: closeConnection.'.blue)
})
}
//Throw error on exception
function dashDBError(action, err) {
console.error('DB ERROR', action, err.message)
console.log('Connections: ', connectionsCount)
console.trace("Here I am!")
return { error: err }
}
以下是我们遇到的错误:
**[IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS".
Location where the error was detected: "169.55.227.101". Communication function detecting the error: "send". Protocol specific error code(s): "32", "*", "0". SQLSTATE=08001
[IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS".
Location where the error was detected: "169.55.227.101". Communication function detecting the error: "selectForConnectTimeout". Protocol specific error code(s): "115", "*", "*". SQLSTATE=08001
Assertion failed: (ret != SQL_INVALID_HANDLE), function GetColumnValue, file ../src/odbc.cpp, line 620.
Abort trap: 6**
答案 0 :(得分:0)
通常,SQL30081N错误表示客户端和服务器之间的tcp / ip层中存在通信错误。请检查以下内容。
查看此技术说明,其中详细说明了db2客户端和服务器连接之间SQL30081n错误的各种原因和解决方法。
IBM SQL30081N TCIPIP connection error
如果这没有帮助,请联系db2支持团队进一步调查。
smurali_IBM