为啥 Mongo 至少打开 5 个连接? [复制]

Posted

技术标签:

【中文标题】为啥 Mongo 至少打开 5 个连接? [复制]【英文标题】:Why does Mongo open at least 5 connections? [duplicate]为什么 Mongo 至少打开 5 个连接? [复制] 【发布时间】:2015-11-12 15:12:21 【问题描述】:

在 node.js-app 中使用 mongoose-Plugin 将打开不止一个连接,即使我只调用一次 mongoose.connect(...);。怎么可能?

这是我来自 mongod 的终端输出,证明有多个连接正在传入

NETWORK  [initandlisten] connection accepted from 127.0.0.1:51515 #1 (1 connection now open)
NETWORK  [initandlisten] connection accepted from 127.0.0.1:51516 #2 (2 connections now open)
NETWORK  [initandlisten] connection accepted from 127.0.0.1:51517 #3 (3 connections now open)
NETWORK  [initandlisten] connection accepted from 127.0.0.1:51518 #4 (4 connections now open)
NETWORK  [initandlisten] connection accepted from 127.0.0.1:51519 #5 (5 connections now open)

【问题讨论】:

不是重复的,而是一个非常相似的问题。它还包含答案。 这就是重复的意思。不必逐字逐句地回答同一个问题。只要它回答了这个问题。这就是为什么您现在应该在此处放置一个带有蓝色大按钮的大横幅,上面写着“这回答了我的问题”。 好的,我明白了。所以我在自己的回答中描述了这一点。谢谢布雷克斯 更精确的副本:***.com/questions/12656375/… 好吧好吧我现在明白了... ;D 【参考方案1】:

正如@Blakes Seven 的评论所暗示的,以下问题是一个非常相似的问题,并且也包含对此问题的答案:

How to manage mongodb connections in a nodejs webapp

Mongoose 似乎不仅仅在单个连接上打开,因为它提供了连接工具功能(有关更多信息,请参阅其他问题)。

【讨论】:

嗯,不是真的。 node.js 为每个 MongoClient 连接使用连接池。这意味着应用程序可以在这些连接之间进行负载平衡,而不是让单个线程连接等待并及时响应。事实上,接受的答案并没有多大意义。它谈到了创建者的池化(这是非常正确的),然后回答者自己谈到了一些打开和关闭连接的随机主题 还需要注意的是,由于 node.js 作为守护进程运行,最外面的脚本永远不会退出,如果你把连接放在那里,连接也将在请求之间保持不变。因此,这允许整个应用程序对多个请求使用多个连接。当然,如果您阅读此内容,您可能会发现您需要更改大型应用程序的池化,而接受的答案似乎也无法从主要提交者所说的内容中理解

以上是关于为啥 Mongo 至少打开 5 个连接? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Mongo Spark 连接器为查询返回不同且不正确的计数?

MongoDB关于无法连接mongo的问题

IIS中已安装了PHP,可以打开PHP和ASP,为啥

当路由在单独的模块中时,如何使用 Node+Mongo 进行连接池? [复制]

MongoDB 5.0 复制:Mongo::Error::NoServerAvailable

基于 Spring WebFlux/Reactive Mongo 的应用程序打开到 mongo db 的多个连接