gpt4 book ai didi

mongodb - MongoDB的连接过多

转载 作者:行者123 更新时间:2023-12-02 15:22:51 25 4
gpt4 key购买 nike

我正在使用Grails开发MongoDB。当我运行“mongod”命令时,它给了我大约135个连接数,并且仍然获得了连接。

我如何只能获得一个连接。

任何对我有帮助的帮助。

最佳答案

tl; dr

MongoDB的每个驱动程序都维护一个连接池,以防止三向握手的开销。您看到的是预期的行为。

更加详细。

假设您有一个显示所有笔记的网页。调用 Controller 时,您可以查询请求用户的所有注释,并使用GSP显示它。现在,镜像您有两个并发用户。如果只有一个连接,则其中一个必须等​​待,直到返回另一个用户的结果。谈到两个并发用户时,延迟不大。但是现在假设您有100或1000个并发用户...他们将永远等待,甚至可能会超时。

好的,现在我们就为什么需要多个连接达成了共识,让我们找出它们为什么那么多。打开套接字连接后,会发生一些事情。基本上,可以这样抄写

C: Hi, Server!

S: Hi, Client!

C: Oh, you are talking with me! Cool!

S: Yes, and I am a MongoDB server, version 3.0!

C: Awesome, just what I wanted! Can you give me your status?

S: Sure! I am a secondary of a replica set called "replSet", the primary is on 192.168.0.1 and another secondary can be found on 192.168.0.100

C: Darn, need to talk to a primary! But let's keep in touch!

S: Sure! Will be here if you need me!



现在,客户端将打开到主数据库的连接,并且几乎只有在服务器将自身标识为主数据库时,两者才会开始交换文档。即使我们拥有独立服务器,该过程也需要花费一些时间。时间不长,但是由于没有充分的理由,这将增加延迟来提供答案。在服务器和客户端上,建立的连接都很便宜。对于服务器来说,它稍微超过了一个兆字节,而在客户端上,它应该不超过几个千字节的RAM。因此,使用预分配的连接,可以节省时间,从而以较小的RAM成本为代价提供更好的性能。

如果使用所有连接怎么办?

通常,仅建立最大可能连接的一小部分。如果剩下一定数量的连接,则会建立几个新连接。这种情况一直持续下去。如果有更多数量的连接可用,那么有几个连接将被拆除。在某些情况下,将建立所有可能的连接。如果发出更多请求,则单个请求必须等待直到连接释放。

您可以通过发出找出可能的连接数
db.serverStatus()

在命令行上。 connections字段显示您有多少当前和可用的连接。

关于mongodb - MongoDB的连接过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32397278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com