Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么第一次连接/请求MongoDB Atlas数据库需要这么长时间?_Node.js_Mongodb_Express_Mongodb Atlas_Mongodb Atlas Search - Fatal编程技术网

Node.js 为什么第一次连接/请求MongoDB Atlas数据库需要这么长时间?

Node.js 为什么第一次连接/请求MongoDB Atlas数据库需要这么长时间?,node.js,mongodb,express,mongodb-atlas,mongodb-atlas-search,Node.js,Mongodb,Express,Mongodb Atlas,Mongodb Atlas Search,我使用React、Nodejs和Mongodb作为数据库创建了一个webapp。我现在正在利用免费的MongoDB Atlas数据库,所以我在那里创建了一个帐户和一个数据库,然后将其与我的node/express服务器连接 我的应用程序运行良好,我能够注册/登录用户并获取数据等。。然而,第一个请求总是需要很长时间才能完成。我现在在Heroku上免费部署了这个应用程序。当我打开应用程序并尝试登录时,第一个请求大约需要20秒才能完成并登录用户。在那之后,一切都进行得很好,很快,所以这只是第一次开始

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

我的应用程序运行良好,我能够注册/登录用户并获取数据等。。然而,第一个请求总是需要很长时间才能完成。我现在在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都会在空闲层应用程序/集群未被使用时挂起它们

如果您在使用之间有很大的差距,您需要接受它,或者设置一个周期性任务来周期性地拨动应用程序以保持其运行

有关Heroku,请参见:


完成后,通过pinger调用的操作对数据库执行一些操作,以保持Atlas运行。

您可以共享连接字符串来替换用户、密码和集群ID吗?应该看起来像
mongodb+srv://user:pass@clusterID.mongodb.net/?选项
。根据我的经验,这可能需要1到2秒钟,除非有什么东西clinking@Minsky没错。下面是我的连接字符串的样子:“mongodb+srv://user:pass@clusterID.mongodb.net/dbname?retryWrites=true&w=mailty“@Minsky我刚从mongodb Atlas网站复制粘贴了这个,当时我创建了dbTry,将
家族:4
添加到options@Minsky谢谢你的建议,但没用。第一次请求仍需要约30秒。令人困惑的是,它在第一次请求之后工作得非常快。每次都像是一个奇怪的冷启动。我有一种感觉,当我长时间停止使用该应用程序时,与mongodb atlas的连接就消失了!我懂了。谢谢,这很有道理