代码之家  ›  专栏  ›  技术社区  ›  Jiew Meng

MySQL/Sequelize上的查询似乎间歇性超时

  •  0
  • Jiew Meng  · 技术社区  · 7 年前

    SELECT l.date, p.type
    FROM (SELECT "2019-01-22T20:45:00" AS date UNION SELECT "2019-01-29T07:15:00" AS date) l
    INNER JOIN pinfare_peak p
    ON l.date BETWEEN p.start AND p.end;
    

    TimeoutError: ResourceRequest timed out
    at ResourceRequest._fireTimeout (/var/task/node_modules/generic-pool/lib/ResourceRequest.js:62:17)
    at Timeout.bound (/var/task/node_modules/generic-pool/lib/ResourceRequest.js:8:15)
    at ontimeout (timers.js:482:11)
    at tryOnTimeout (timers.js:317:5)
    at Timer.listOnTimeout (timers.js:277:5)
    

    在RDS错误日志上,我确实看到了如下内容:

    Aborted connection 10 to db: 'income' user: 'income' host: '10.0.13.26' (Got an error reading communication packets)
    

    但我不确定他们是否有亲属关系

    我的代码看起来像:

    const sqlList = dates.map(date => {
      return `SELECT "${date}" AS date`
    }).join(' UNION ')
    const sql = `
      SELECT l.date, p.type
      FROM (${sqlList}) l
      INNER JOIN pinfare_peak p
      ON l.date BETWEEN p.start AND p.end
    `
    console.log('Query', sql.replace('\s+', ' '), new Date())
    let results
    try {
      results = await sequelize.query(sql, { type: sequelize.QueryTypes.SELECT })
    } catch (err) {
      console.log('FAIL TO QUERY DB', err.message)
      throw err
    }
    

    数据库选择失败。当我在同一个数据库上使用MySQL workbench上生成的同一个select查询时,它工作得很好。实际上并不慢。为什么会导致节点超时?

    0 回复  |  直到 7 年前
    推荐文章