大家好,又见面了,我是你们的朋友全栈君。
我有一个node程序每小时查询一次本地数据库马上再查询一次内网数据库,仅在查询内网数据库时出现read ECONNRESET。
使用npm库knex+mysql2连接数据库,knex配置如下(有使用连接池)
require(‘knex’)({
client: ‘mysql2’,
connection: {
host : ‘127.0.0.1’,
user : ‘your_database_user’,
password : ‘your_database_password’,
database : ‘myapp_test’
}
pool: {
min: 5,
max: 1000
},
acquireConnectionTimeout: 60000,
asyncStackTraces: false, // 捕获堆栈跟踪,正式环境不要开启,会消耗性能
migrations: {
tableName: ‘knex_migrations’ // 记录版本控制的表用哪个
},
log: {
warn (message) {
console.log(‘[knex warn]’, message)
},
error (message) {
console.log(‘[knex error]’, message)
},
deprecate (message) {
console.log(‘[knex deprecate]’, message)
},
debug (message) {
console.log(‘[knex debug]’, message)
}
}
})
mysql的show variables like ‘wait_timeout’;是
即8小时。
根据这篇回答:https://stackoverflow.com/a/2…
应该不会出现read ECONNRESET才对啊,mysql关闭无用连接时间是8小时,而我每小时查询一次数据库,都会大概率出现这问题,何况我还用了连接池,knex应该是用了mysql2的连接池吧?mysql2的连接池不是会自动维护这些连接吗?
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150172.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...