使用nodejs / mysql的MySQL查询-如何设置超时

时间:2019-07-02 12:19:10

标签: mysql node.js timeout

我有一个Node.JS后端,该后端使用MySQL连接到我的数据库。现在,我使用连接池重新使用打开的连接(如果可用)。目前,我在Node.JS中的配置如下所示:

var pool = mysql.createPool({
    connectionLimit: 10,
    host: DB_HOST,
    user: DB_USER,
    password: DB_PASS,
    database: DB_BASE,
    ssl      : {
          ca   : fs.readFileSync('******'),
          key  : fs.readFileSync('******'),
          cert : fs.readFileSync('******'),
    },
    charset : 'utf8mb4',
    dateStrings: true
})

但是,我的服务器运行在具有2 GB RAM和2个vCPU的Linux机器上,现已配置为在300秒后超时(my.cnf):

wait_timeout = 300
interactive_timeout = 300

我当前面临的问题是,并且我认为这是因为存在此连接池,所以我只释放了一个连接而没有关闭或结束它。这样在MySQL的error.log文件中给了我很多错误,就像这样:

2019-06-30T11:08:59.749390Z 1485 [Note] Aborted connection 1485 to db: 'DBNAME' user: 'server' host: 'XXX.XXX.X.XX' (Got timeout reading communication packets)

我认为发生这种情况是因为该连接仍处于打开状态(已释放但处于打开状态),然后在接下来的5分钟(300秒)内未使用该连接,因此我的服务器会自动将其关闭。这是一个正确的假设,还是我在这里完全错了?我应该在其他地方寻找解决方案吗?

但是,如果我是正确的话,有什么办法可以防止这种情况发生,或者此错误/警告是否真的无关紧要?我考虑将超时设置为默认的8小时,或者在Node.JS中有一种方法,例如在4分钟内未使用时,我不知道会关闭连接,但是我想在更改任何内容之前先听取一些意见。

干杯!

0 个答案:

没有答案