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“连接失败。操作正在进行中”的主要内容,如果未能解决你的问题,请参考以下文章