为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
白板的微信 2021-09-27 20:58:04
我正在使用 MongoDB 作为数据库和 mgo 作为驱动程序在 Go 中编写 REST API。对于路由器,我使用的是客户:pi。在程序启动时,我创建了一个主 mgo.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)。我读过关于增加MongoDB 的ulimit,但这真的是一个解决方案吗?
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

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

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


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 261 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信