Lambda从mysql RDS获取数据但超时

时间:2017-02-16 03:51:27

标签: mysql node.js lambda node-mysql

我正在使用Lambda通过VPC连接到RDS并且工作正常。 我可以成功从mysql获取数据,但Lambda会超时。

CloudWatch日志:

  

2017-02-15T18:56:18.609Z [RowDataPacket {userInfo:'xxx'}]
      END RequestId:xxx       REPORT RequestId:xxx持续时间:300001.69 ms结算时长:300000 ms内存大小:512 MB最大使用内存:22 MB
      2017-02-15T19:01:18.306Z xxx任务在300.00秒后超时

Handle.js

db.getPersonInfo("xxx", function (err, result) {
    console.log(result);
    const response = {
          statusCode: 200,
          body: JSON.stringify({
            message: 'test',
            input: event,
          }),
        };
    callback(null, response);
});

DB.js

var getPersonInfo = function(userId, callback){
    pool.getConnection(function(err, connection){
      var sql = 'SELECT userInfo FROM user where userId = ?';
      connection.query( sql , userFbId , function(err, results) {
        if(err){
          console.log(err);
        }
        callback(err, results);
        connection.release();
      });
    });
  };

1 个答案:

答案 0 :(得分:3)

我终于发现游泳池应该结束了。 Lambda工作找到了。

var getPersonInfo = function(userId, callback){
    pool.getConnection(function(err, connection){
      var sql = 'SELECT userInfo FROM user where userId = ?';
      connection.query( sql , userId , function(err, results) {
        if(err){
          console.log(err);
        }
        callback(err, results);
        connection.release();
        pool.end(function (err) {
          // all connections in the pool have ended
        });
      });
    });
  };

还有一件事是每次lambda启动时都必须运行mysql createConnection函数。这是Ref