【发布时间】:2021-01-05 11:08:34
【问题描述】:
我在后端使用 express 服务器、猫鼬和 MongoDB Atlas。我的应用程序托管在 heroku 上。 我在服务器引导程序上只打开一次连接:
db()
.then(() => {
console.log('Connected to the database')
})
.catch((err) => {
console.log(err);
});
db() 看起来像这样:
function db() {
return new Promise(function(resolve, reject) {
mongoose.connect(process.env.ATLAS_URI, {useNewUrlParser: true, poolSize: 25});
mongoose.connection.once('open', function() {
console.log('open')
resolve("Connection has been made.");
});
mongoose.connection.on('error', function(error) {
reject("Connection error: " + error.message);
})
})
}
然后,在短短 2 小时内,我打开了 500 个连接,这导致 Atlas 出错。 重新启动测功机有帮助,但我不能每 2 小时执行一次。 它可能是什么,我该如何解决这个问题?
【问题讨论】:
-
你是打开连接而不是关闭它们,最终你达到了连接限制。
-
感谢您的回答。我读过不关闭连接是一个好习惯。无论如何,在代码中关闭它的正确位置是什么?
-
每个进程通常会有一个未完成的连接。你显然赚的更多了。
-
嗯,一旦我的服务器启动,连接功能就会执行,就是这样。我不知道为什么它会再次执行。
标签: node.js mongodb heroku mongoose mongodb-atlas