2017-02-16 4 views
1

私はVDSでRDSにLambda connectを使用しています。 mysqlからデータを正常に取得できますが、Lambdaはタイムアウトします。Lambdaはmysql RDSからデータを取得しますが、タイムアウトを取得します

CloudWatchのログ:

2017-02-15T18:56:18.609Z [RowDataPacket {ユーザー情報: 'XXX'}]
ENDのRequestId:XXX REPORT RequestId:XXX時間:300001.69 MS請求済時間:300000ミリ秒メモリサイズ:512メガバイト最大メモリが使用される:22メガバイト
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(); 
     }); 
    }); 
    }; 

答えて

2

私は最終的にプールが最後であることを知ります。そしてラムダの仕事が見つかります。

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 
     }); 
     }); 
    }); 
    }; 

もう1つのことは、lambda startを実行するたびにmysql createConnection関数を実行する必要があることです。ここにはRefがあります。

+0

'pool'インスタンスで' end(..) '関数を呼び出すと、それを再初期化する必要があります。それ以外の場合は、失敗します。 – gokhanakkurt

関連する問題