开发者社区> 问答> 正文

MongoDB的连接该怎么理解

MongoDB好像也有连接池的概念,默认最大连接数量是1024个,每建立一个连接要消耗一定的内存资源。

MongoDB的这个“连接”该怎么理解?比方在node中,只有一个进程启动node程序,在启动应用时候,配置了账号密码指定了数据库,随着程序启动自动连接了MongoDB数据库,这时是不是就建立了对MongoDB的一个连接?

启动后的node程序接收了很多http请求,每个请求操作中,都会调用之前创建好的连接对象,执行对MongoDB的操作。也就是说,不管node接收到多么多的http请求,它不就始终只有一个对MongoDB的连接在操作数据库?具体应该怎样理解MongoDB的连接数量?如果是这样,那默认的最大1024个连接好像也用不上了。

本问题及下方已被采纳的回答均来自云栖社区【Redis&MongoDB 社区大群】。https://yq.aliyun.com/articles/690084 点击链接欢迎加入社区大社群。

展开
收起
李博 bluemind 2019-04-09 13:59:35 3394 0
1 条回答
写回答
取消 提交回答
  • 云栖社区Java、Redis、MongoDB运营小编,有意合作请联系钉钉:15810436147

    mongodb好像也有连接池的概念,默认最大连接数量是1024个
    是有连接池的概念,但是1024不知道是指的什么。服务端最大连接是65000,客户端Java/C#默认最多连100个,NodeJS没记错应该应该是5个(因为是单线程)。1024大概是指的ulimit?这是操作系统默认给的最大打开文件数。Linux中一切皆文件,所以这个限制也会限制到网络连接数。

    mongobd的这个“连接”该怎么理解?比方在node中,只有一个进程启动node程序,在启动应用时候,配置了账号密码指定了数据库,随着程序启动自动连接了Mongobd数据库,这时是不是就建立了对mongodb的一个连接?

    启动后的node程序接收了很多http请求,每个请求操作中,都会调用之前创建好的连接对象,执行对mongodb的操作。也就是说,不管node接收到多么多的http请求,它不就始终只有一个对mongodb的连接在操作数据库?具体应该怎样理解mongodb的连接数量?如果是这样,那默认的最大1024个连接好像也用不上了。
    你自己其实也提到了有连接池的概念,其实无论是在使用MongoClient或MongoDatabase对象时,其中都有连接池在运作,会根据你的并发程度创建更多的连接以满足所有请求的需要。注意NodeJS是单线程异步非阻塞式运行,所以请求数并不一定等于连接数。但这都是在说客户端。如前面撰述,1024如果是指的服务端ulimit,那服务器可能面对多个客户端,连接数为客户端连接数总和。而1024指的也不单是连接数,它包括了服务端所能打开的一切句柄,因此打开一个数据文件,一个索引,一个连接,都是要占用1024中的一个的。所以1024通常是不够的,应该调整。

    2019-07-17 23:32:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载