为什么第一个 connection/request 到 MongoDB Atlas 数据库需要这么长时间?

Why does the first connection/request to MongoDB Atlas database taking so long?

我使用 React、Nodejs 和 Mongodb 创建了一个网络应用程序作为数据库。我现在正在利用免费的 MongoDB Atlas 数据库,所以我在那里创建了一个帐户和一个数据库,然后将它连接到我的 node/express 服务器。

我的应用程序运行良好,我能够 register/login 一个用户并获取数据等。但是,第一个请求总是需要很长时间才能完成。我现在在 Heroku 上免费部署了该应用程序。当我打开应用程序并尝试登录时,第一个请求需要大约 20 秒才能完成并登录用户。在那之后,一切都运行得很好而且很快,所以这真的只是第一次开始。

由于我的应用程序正在运行,我不知道这里有什么问题。我唯一的猜测是这个问题特定于 MongoDB Atlas 及其免费数据库。

这是我用来连接数据库的代码,非常简单:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;


mongoose.connect(MONGODB_HOST, {
  useNewUrlParser: true, 
  useUnifiedTopology: true, 
  useFindAndModify: true,
  useCreateIndex: true });

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

Heroku 和 Atlas 都在不使用时暂停免费套餐 applications/clusters。

如果您在使用之间有很大的差距,您要么需要忍受它,要么设置一个周期性任务来定期戳应用程序以保持它 运行。

对于 Heroku,请参阅:

完成后,根据 pinger 调用的操作对数据库进行一些操作以保留 Atlas 运行。