Mongodb 由于数据库连接,Lamda上的初始请求速度较慢
当我的lambda函数被激活时,它将连接到我的MongoDB Atlas实例,从而显著降低响应速度1000-2000ms 我可以缓存DB连接,但只有在最后一次请求之后很快发出请求时,缓存才会持续,并且不会持续一小时后发出的请求 是否有任何本机AWS DB可以避免此问题,并且每次都允许即时连接?(documentDB、DynamoDB等) 代码Mongodb 由于数据库连接,Lamda上的初始请求速度较慢,mongodb,aws-lambda,amazon-dynamodb,aws-documentdb,Mongodb,Aws Lambda,Amazon Dynamodb,Aws Documentdb,当我的lambda函数被激活时,它将连接到我的MongoDB Atlas实例,从而显著降低响应速度1000-2000ms 我可以缓存DB连接,但只有在最后一次请求之后很快发出请求时,缓存才会持续,并且不会持续一小时后发出的请求 是否有任何本机AWS DB可以避免此问题,并且每次都允许即时连接?(documentDB、DynamoDB等) 代码 mysql连接也存在同样的问题,当lambda函数冷启动时,缓存的变量就会消失。 我唯一的解决方案是通过函数预热保持缓存的活动状态。 只需设置一个周期性c
mysql连接也存在同样的问题,当lambda函数冷启动时,缓存的变量就会消失。 我唯一的解决方案是通过函数预热保持缓存的活动状态。 只需设置一个周期性cron作业,每5-15分钟触发一次函数,请放心,它将始终处于空闲状态。
您也可以检查此项:您正面临冷启动。这与数据库连接无关 为了使lambda功能保持温暖,您可以设置CloudWatch事件,定期触发lambda(通常每5分钟一次就足够了) 另外,如果您使用的是
DocumentDB
,则必须将Lambda
放入VPC
。它需要设置ENI
(弹性网络接口),因此增加了启动时间。例如,如果您可以避免使用VPC,那么它可以为您带来一些性能优势
更多信息:
let response
import { MongoClient } from 'mongodb'
let cachedDb = null
const uri =
'mongodb+srv://XXXX'
function connectToDatabase(uri) {
if (cachedDb && cachedDb.serverConfig.isConnected()) {
console.log('=> using cached database instance')
return Promise.resolve(cachedDb)
}
const dbName = 'test'
return MongoClient.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true }).then(
client => {
cachedDb = client.db(dbName)
return cachedDb
}
)
}
export async function lambdaHandler() {
try {
const client = await connectToDatabase(uri)
const collection = client.collection('users')
const profile = await collection.findOne({ user: 'myuser' })
response = profile
}
} catch (err) {
console.log(err)
return err
}
return response
}