我一直在使用Node.js 16 + MongoDB v4的AWS中获得以下错误,这通常发生在流量较高的Lambda中,其他lambda似乎对当前的设置没有影响。
MongoNetworkError: connection 6 to xx.x.xx.xx:xxxxx closed at Connection.onClose (/var/task/node_modules/mongodb/lib/cmap/connection.js:135:19)
lambda内部的MongoDB连接:
const MongoClient = require('mongodb').MongoClient;
const logger = require(''); const log = logger(__filename);
const getDbClient = async (uri) => {
try {
log.info('Connecting to Mongo client...');
const dbClient = await MongoClient.connect(uri);
log.info('Connected to Mongo client');
return dbClient;
}
catch (err) {
log.error('Error encountered connecting to database: ', err);
throw err;
}
};
module.exports = {
getDbClient
};
mongodb可以选择maxPoolSize=10
,因为我最近进行了从MongoDB v3到v4的升级,v4默认有maxPoolSize of 100
,v3将其升级到10. https://github.com/mongodb/node-mongodb-native/blob/HEAD/etc/notes/CHANGES_4.0.0.md#connection-pool-options。
MongoDB硬件:
3xM4.XLarge(4 4Core/16 RAM)
这个问题发生在我将MongoDB驱动程序从v3升级到v4之后,并停止在lambda中检查是否存在现有连接,这样我就可以使用它了,因为在v4中,这显然是自动完成的。
我以前用的是:MongoClient.isConnected()
( MongoDB v3 )。
你们知道这是什么原因吗?
发布于 2022-08-30 08:54:02
我没有足够的声誉来发表评论,所以我会发个回复:D
我认为您的Lambda功能现在的流量非常高,所以它甚至超过了mongodb的池大小
https://stackoverflow.com/questions/73539202
复制相似问题