gpt4 book ai didi

mongodb - 多个 session.Copy() 后 mgo 连接泄漏

转载 作者:IT王子 更新时间:2023-10-29 02:16:06 24 4
gpt4 key购买 nike

我正在使用 MongoDB 作为数据库并使用 mgo 作为驱动程序在 Go 中编写 REST API。对于路由器,我使用的是客户:pi .

在程序启动时,我创建了一个主 mgo.Session,然后,对于处理的每个请求,我复制主 session 并在完成后将其关闭。

但是,当同时处理多个请求时,我观察到 MongoDB 连接仍然打开,即使我关闭了每个复制的 mgo.Session。

这是 lsof 的输出示例命令:

milano-ru 18790 neel_v  118u  IPv4 34115804      0t0     TCP localhost:44238->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 119u IPv4 34115812 0t0 TCP localhost:44241->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 120u IPv4 34115813 0t0 TCP localhost:44242->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 121u IPv4 34115814 0t0 TCP localhost:44243->localhost:27017 (ESTABLISHED)
milano-ru 18790 neel_v 122u IPv4 34115815 0t0 TCP localhost:44244->localhost:27017 (ESTABLISHED)

因此,在我的应用程序运行几个小时后,它停止工作,因为它无法打开另一个 MongoDB 连接,因为达到了限制 (1024)。

我读过关于增加 ulimit 的内容MongoDB,但它真的是一个解决方案吗?

最佳答案

我有点难过,同时也松了一口气,但我在发布问题后立即找到了答案......

检查 mgo session 后,我可以看到 Dial 设置,默认情况下 maxPoolSize 为 4096...在尝试减小池大小后它解决了我的问题。

关于mongodb - 多个 session.Copy() 后 mgo 连接泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29607533/

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