为啥 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 连接器为查询返回不同且不正确的计数?
当路由在单独的模块中时,如何使用 Node+Mongo 进行连接池? [复制]