我有一个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的连接池不是会自动维护这些连接吗?