【问题标题】:AWS Lambda Timeout Followed by Connection ErrorAWS Lambda 超时后出现连接错误
【发布时间】:2018-10-23 23:14:03
【问题描述】:

我有一个每五分钟运行一次的 AWS Lambda。 Lambda 将在我的 VPC 中创建与 RDS 数据库的连接并运行一些查询。

Lambda 将成功运行 3 次,运行大约 15 分钟左右,但是,然后出现超时错误:

任务在 600.10 秒后超时

出现此超时错误后,下次 Lambda 尝试运行时,我无法再连接到我的 RDS 数据库。我收到以下超时错误:

错误:连接 ETIMEDOUT

在这一点上我很困惑,可以多花点心思:

'use strict';

const mysql = require('mysql');
const util = require('util');

const {
  fetchQuery, 
  insertQuery,
  updateQuery,
} = require('./queries');

const {
  getInsertValues, 
  getUpdateValues,
} = require('./utils');

const connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

// node native promisify
const query = util.promisify(connection.query).bind(connection);

connection.connect();

module.exports.scan = async (event, context, callback) => {
  let results = await query(fetchQuery);

  console.log(`found ${results.length} forms that are scheduled to be filed`);

  if (results.length > 0) {
    const insertValues = getInsertValues(results);
    const updateValues = getUpdateValues(results);

    try {
      console.log(`creating user_tasks`);
      await query(insertQuery, [insertValues]);

      console.log(`updating next_scheduled dates`);
      await query(updateQuery, [updateValues]);

      callback(null, 'successfully updated form next_scheduled')
    } catch (err) {
      console.error('error creating user_tasks')
      callback(err, 'error creating user_tasks')
    }
  }
}

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless-framework


    【解决方案1】:

    使用完后尝试关闭与数据库的连接,我之前遇到过类似的错误,因为打开的连接使 Lambda 保持活动状态,直到超时

    【讨论】:

    • 是的,我都忘记了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2017-10-05
    • 2020-11-18
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多