繁体   English   中英

AWS Lambda Mongodb错误:拓扑已被破坏

[英]AWS Lambda Mongodb Error: topology was destroyed

我已经创建了一个Lambda函数,用于通过Node JS中的该函数将数据存储到Mongodb:

const Connection = MongoClient.connect(...);
const demoColl = Connection.collection('demo');
demoColl.bulkWrite(bulkArray...);
client.close();

我已经通过平稳地invoke local函数进行了测试,一次运行一次也成功。

但是我的应用程序每秒调用该函数3-5次,lambda显示此错误消息

“ errorMessage”:“拓扑被破坏”,“ errorType”:“ MongoError”

我已经完成了一项研究,当该函数仍在运行时,它会导致关闭数据库。 如何防止其中一个连接关闭不会影响另一个Lambda函数?

import * as mongoose from "mongoose";

(<any>mongoose).Promise = global.Promise;
let cacheDb: mongoose.Connection = null;
export let connect = () => {
    if (cacheDb && mongoose.connection.readyState === 1) {
        return cacheDb;
    } else {
        // Mongoose config and setting global Promise
        mongoose.connect(process.env.MONGODB_URI, {
            promiseLibrary: global.Promise,
            connectTimeoutMS: 20 * 1000
        }).then(() => {
            cacheDb = mongoose.connection;
            return cacheDb;
        }).catch((err) => {
            console.log(err);
        });
    }
};
export let disconnect = () => {
    mongoose.disconnect();
}

我有这个文件,用于缓存MongoDB连接并在可用时重复使用。 只要确保它不在lambda处理程序之外即可。

而且,关闭连接不是一个好主意,因为这会使您的lambda在每次调用lambda时都进行连接-这增加了数据库和Lambda执行时间的负担。

参考: https : //blog.cloudboost.io/i-wish-i-knew-how-to-use-mongodb-connection-in-aws-lambda-f91cd2694ae5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM