【问题标题】:NodeJS and Mysql. Would not calling connection.end() before terminate be acceptable?NodeJS 和 Mysql。在终止之前不调用 connection.end() 可以接受吗?
【发布时间】:2016-09-27 19:28:14
【问题描述】:

我想使用来自 AWS Lambda(托管 nodejs)的 mysql。

当几分钟内没有新请求出现时,Lambda 会自动终止 nodejs 实例。 由于这种 Lambda 行为,我不想调用 end() ,否则它将使每个请求都执行连接-使用-结束循环。我希望连接(或池)支持多个请求。

如果没有调用 connection.end() 并且实例被终止,那会是一个问题吗? (会不会有泄漏什么的)

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});

connection.connect();

index.handler = function(){

    connection.query('SELECT x', function(err, rows, fields) {
        // do something here
    });
};


// * cannot call because potential incoming request still need to use.
// connection.end();

【问题讨论】:

    标签: mysql node.js amazon-web-services aws-lambda


    【解决方案1】:

    您最终可能会在某个时候收到“连接过多”错误。

    在此之前,您最好的选择是在同一调用中打开和关闭连接。

    连接池是一个需要有效重用 lamdba 容器的用例,是 aws 上的待处理功能请求。

    https://forums.aws.amazon.com/thread.jspa?threadID=216000

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2018-11-24
      • 1970-01-01
      相关资源
      最近更新 更多