首页 > 解决方案 > MongoError:当被 lambda 调用时,池被破坏,但不是由来自同一服务器的代码

问题描述

今天早上突然我们基于 lambda 的端点无法连接到我们基于 ec2 的 mongodb。它只会返回错误{ MongoError: pool destroyed

但是我与 mongodb 位于同一 ec2 服务器内的 nodejs 代码可以毫无问题地访问 mongodb。下面是我们从每个 lambda 函数调用的 mongodb 连接代码。

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
let isConnected;
module.exports = connectToDatabase = () => {
 if (isConnected) {
   console.log('=> using existing database connection');
   return Promise.resolve();
 }
 console.log('=> using new database connection');
 return mongoose.connect('mongodb://123.456.789.123:27017/musleh-api')
   .then(db => {
     isConnected = db.connections[0].readyState;
   });
};

上面的代码由

const connectToDatabase = require("./../../db_mongo.js");
const handler = (req, res) => {

connectToDatabase().then(() => {
        console.log("67 dlm connectToDatabase")
        processSubmission(email,password).catch(function(err){
          console.log("69 err");
          console.log(err);
          res.status(400).send({ success:false, msg: err.toString() });
          return false;
        })
    });
}

大约半小时后,突然我们的 lambda 可以再次访问我们的 ec2 mongodb,没有任何问题。所以我们真的很困惑为什么会发生这种情况。有什么线索吗?

标签: mongodbmongooselambda

解决方案


推荐阅读