Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lambda从mysql RDS获取数据但超时_Mysql_Node.js_Lambda_Node Mysql - Fatal编程技术网

Lambda从mysql RDS获取数据但超时

Lambda从mysql RDS获取数据但超时,mysql,node.js,lambda,node-mysql,Mysql,Node.js,Lambda,Node Mysql,我正在使用Lambda连接到带有VPC的RDS,工作正常。 我可以成功地从mysql获取数据,但Lambda将超时 CloudWatch日志: 2017-02-15T18:56:18.609Z[行数据包{userInfo:'xxx'}] 结束请求ID:xxx 报告请求ID:xxx持续时间:300001.69毫秒计费持续时间:300000毫秒内存大小:512 MB最大使用内存:22 MB 2017-02-15T19:01:18.306Z xxx任务在300秒后超时 Handle.js db.get

我正在使用Lambda连接到带有VPC的RDS,工作正常。 我可以成功地从mysql获取数据,但Lambda将超时

CloudWatch日志:

2017-02-15T18:56:18.609Z[行数据包{userInfo:'xxx'}]
结束请求ID:xxx 报告请求ID:xxx持续时间:300001.69毫秒计费持续时间:300000毫秒内存大小:512 MB最大使用内存:22 MB
2017-02-15T19:01:18.306Z xxx任务在300秒后超时

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


我终于发现游泳池应该结束了。还有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
        });
      });
    });
  };

还有一件事是mysql createConnection函数必须在每次lambda启动时运行。以下是。

一旦在
实例上调用
结束(…)
函数,就需要重新初始化它。否则,它将失败。我知道回调基本上停止执行,所以我在pool.end之后进行回调,否则我们一直都在达到连接数限制,然后在pool.end之后进行回调,并且不时会得到协议\u序列\u超时,因为pool.end基本上是一个承诺。所以我将回调移到pool.end中,现在看起来还可以。
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
        });
      });
    });
  };