node使用knex连接mysql,每个小时大概率出现:read ECONNRESET?

我有一个node程序每小时查询一次本地数据库马上再查询一次内网数据库,仅在查询内网数据库时出现read ECONNRESET

使用npmknex+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';

clipboard.png

即8小时。

根据这篇回答:https://stackoverflow.com/a/2...
应该不会出现read ECONNRESET才对啊,mysql关闭无用连接时间是8小时,而我每小时查询一次数据库,都会大概率出现这问题,何况我还用了连接池,knex应该是用了mysql2的连接池吧?mysql2的连接池不是会自动维护这些连接吗?

阅读 6.9k
2 个回答
新手上路,请多包涵

最近也遇到同样的问题。但是之前使用knex时,一直没事。
结合与楼主发生的时间差不多,然后试了下把knex版本降到之前使用的0.13之后,就没事了
遇到的坑友可以试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题