MongoDB“连接失败。操作正在进行中”

Posted

技术标签:

【中文标题】MongoDB“连接失败。操作正在进行中”【英文标题】:MongoDB "Connect failed. Operation now in progress" 【发布时间】:2011-10-31 21:58:54 【问题描述】:

昨天出现了一个奇怪的行为:

在小负载下,所有查询都需要很长时间,然后站点返回错误 “与 MongoDB 的连接失败。操作正在进行中” 在 mongostat 我们看到大约 10-30 个连接(非常小,因为我们 通常使用 400-500) 但是当我输入“netstat -na | grep 27017”时,我看到了非常多的 TCP 连接 (> 150):

http://pastebin.com/3ghtwkVd

为什么 mongodb 关闭连接,但 TCP 仍然打开?

我们不使用持久连接并且总是使用 Mongo:close() 在脚本的末尾。

站点在像 Amazon EC2 这样的云系统上工作(我们没有观察到任何 网络问题)

10.1.1.16 - MongoDB 10.1.1.7 - 阿帕奇 服务器间1Gbit/s 操作系统:Debian 6 挤压 MongoDB:1.8.2(与 1.6.6 我们有同样的问题) 阿帕奇 2 php 5.3.6 PHP mongo 驱动程序 1.1.0(1.2.x 中的连接池对 我们)

【问题讨论】:

【参考方案1】:

看起来您的驱动程序(例如 PHP)实际上并没有关闭 TCP 连接,即使您使用该方法关闭它也是如此。

如果您使用 PHP 作为模块,请尝试优雅的 apache reload 以使 PHP 模块卸载并再次加载。这样,就会调用析构函数并关闭连接。

如果您使用 PHP 作为 fastcgi 应用程序,请重新启动(杀死/执行)它并再次调用。

如有必要,请提交错误。

【讨论】:

以上是关于MongoDB“连接失败。操作正在进行中”的主要内容,如果未能解决你的问题,请参考以下文章

Lumen连接MongoDB Atlas时认证失败

ubuntu 连接mongodb失败?

多个应用服务器上的 MongoDB 连接失败

cmd输入mongo指令连接mongodb数据库服务端失败

Mongodb 连接失败,怎么避免抛错影响正常流程

连接MongoDB失败,处理办法