【问题标题】:How to persist sequelize connection with AWS Lambda functions (or speed up initial connection)?如何保持与 AWS Lambda 函数的 sequelize 连接(或加快初始连接)?
【发布时间】:2017-02-17 17:19:01
【问题描述】:

我目前有一个 AWS Lambda 函数,它利用 sequelize 从 RDS 中的 MySQL 数据库连接/查询。

一切都按预期工作,只是在一段时间不活动后的第一次连接总是需要至少 5 秒才能启动。随后的 lambda 调用很快,所以我怀疑连接是持久化和池化的。

这有点烦人,所以我想知道我是否可以优化它以更快地连接,或者配置 lambda 以便连接是永久的。

"use strict"
var Sequelize = require('sequelize')

var database = 'participantData',
    host = 'hostname',
    username = 'username',
    password = 'blah'

var sequelize = new Sequelize(database, username, password, {
  host: host,
  dialect: 'mysql',
  logging: console.log('Query Logged')
})

var Resource = sequelize.define('resource', {
  program_name: { type: Sequelize.STRING },
  geocoded_address: { type: Sequelize.STRING }
})

exports.handler = function(event, context){
  Resource.findAll({
    //some filter
  })
    .then((res) => {
      context.succeed(JSON.stringify(res))
    })
    .catch(error => console.log(error))
}

【问题讨论】:

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


    【解决方案1】:

    不,您不能在 Lambda 中建立永久连接,因为它的基本工作方式。但您可以优化 Lambda 启动时间、重用等。请参阅 https://www.reddit.com/r/aws/comments/49l91l/lambda_functions_in_vpc_cold_boot_times_of_10/https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/

    我猜你只需要每隔一段时间发送一个请求,这样它就可以继续重用容器。

    【讨论】:

    • 这正是我遇到的问题。感谢您的资源!
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2018-10-05
    • 2018-06-16
    • 2018-02-26
    • 2020-11-30
    • 2020-11-14
    • 2017-05-23
    • 1970-01-01
    相关资源
    最近更新 更多