每当我的网站空闲一段时间,我加载它,它显示一个504超时错误从netlify和vercel。我知道这是由于超时限制设置的两个平台,然后在重新加载它的工作正常我知道这是由于数据库连接,它需要一段时间来连接在初始连接
有没有一种方法可以让它一直保持连接,或者你建议我在下一个js项目中如何处理这个问题,以防止它在空闲一段时间后花这么长时间来连接?
这是我的数据库连接函数
import mongoose from 'mongoose'
const MONGODB_URI = process.env.MONGO_URL
if (!MONGODB_URI) {
throw new Error(
'Please define the MONGODB_URI environment variable inside .env.local'
)
}
let cached = global.mongoose
if (!cached) {
cached = global.mongoose = { conn: null, promise: null }
}
async function db() {
if (cached.conn) {
return cached.conn
}
if (!cached.promise) {
const opts = {
bufferCommands: false,
}
cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => {
return mongoose
})
}
try {
cached.conn = await cached.promise
} catch (e) {
cached.promise = null
throw e
}
return cached.conn
}
export default db
我是这么称呼它的:await db()
,这是数据库URL的外观mongodb+srv://*********@cluster0.7xbw7v5.mongodb.net/?retryWrites=true&w=majority
1条答案
按热度按时间brccelvz1#
如果您的问题是由冷启动引起的,那么一个很好的解决方法是以您喜欢的时间间隔定期ping服务器以预热服务器
我在https://www.checklyhq.com/中使用了checkly
因此,您可以为预热创建一个单独的端点,并检查是否应按设置的时间间隔运行它