我使用复制集运行Mongo 2.4,其中包含1个主要,1个辅助和仲裁。我们使用的是pymongo 2.6和mongoengine 0.8.2。
最近,我们对Mongo 2.6进行了升级,并将pymongo升级到2.7.2,将mongoengine升级到0.8.7。 这个设置工作了近12个小时,之后我们开始得到以下错误:
[initandlisten] connection refused because too many open connections: 819
ulimit是1024,与Mongo 2.4完美配合,因此我们没有增加它。增加它可能会暂时解决问题,但我们将来会再次发现它。不知何故,根本原因似乎是Pymongo无法关闭连接。任何指针为什么会这样?
PS:当使用Mongo 2.4与pymongo 2.7.2和mongoengine 0.8.7时,一切运行良好,最大连接数约为250.仅使用Mongo 2.6,pymongo 2.7.2和mongoengine 0.8.7,连接数最高可达819。答案 0 :(得分:1)
经过大量的努力和大量的负载测试后,我们通过将PyMongo升级到2.8.1 解决了这个问题。 PyMongo 2.7.2是第一个支持MongoDB 2.6的版本,它确实在处理连接时遇到了一些问题。升级到PyMongo 2.8.1帮助我们解决了这个问题。在相同负载下,连接不超过250-300。