簡體   English   中英

未關閉 MySql nodejs 上的連接導致超時 lambda AWS

[英]Not closing connection on MySql nodejs cause timeout lambda AWS

我在 AWS lambda 上有一個代碼,可以查詢 AWS RDS MySQL DB。

每次需要插入數據庫時,它都會運行此 class:

const mysql = require('mysql');
const config = require('../config.js');
const con = mysql.createConnection(config);

async function insert_score_db(user,message_id,date_created,sprint){
    //con.connect(function(err) {
      //if (err) throw err;
       console.log("Connected!");
        var sql = "INSERT INTO  user_records (user_name,message_id, date_created,sprint) VALUES ('"+user+"', "+ message_id + ", '"+date_created+"',"+ sprint+");";
        
        con.query(sql, function (err, result) {
        if (err) throw err;
          console.log(result);

      });
      //con.end();
      //con.destroy();
    //});
}

module.exports={
    insert_score_db
};

正如文檔所說,我沒有使用**con.connect(function(err){**因為任何query調用都隱式地建立了連接。

我還評論**con.end()**因為這個 function 是由嵌套的異步循環運行的,它會導致以下排隊 Hanshake:

ERROR   Uncaught Exception  {"errorType":"Error","errorMessage":"Cannot enqueue Handshake after invoking quit.","code":"PROTOCOL_ENQUEUE_AFTER_QUIT","fatal":false,"stack":["Error: Cannot enqueue Handshake after invoking quit.","    at Protocol._validateEnqueue

我擺脫了**con.end()**並且所有代碼都正常運行,但 function 以: Task timed out after 210.10 seconds 我的猜測是數據庫連接永遠不會關閉到 lambda 執行無法完成。

使用嵌套異步循環運行數據庫查詢的潛在解決方案是什么?

con.end()con.destroy()放在con.query con.query() ) 的回調 function 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM