我有一个MongoDB集群(2.6.3),有三个mongos进程和两个副本集,没有启用分片。在
特别是我有7台主机(都是Ubuntu Server 14.04):
这里的客户机应用程序是一个Zato Cluster,每个服务器上运行4个gunicorn worker,每个服务器使用两个PyMongo.MongoClient
实例访问MongoDB。
这些MongoClient
对象的创建如下:
MongoClient(mongo_hosts, read_preference=ReadPreference.SECONDARY_PREFERRED, w=0, max_pool_size=25)
MongoClient(mongo_hosts, read_preference=ReadPreference.SECONDARY_PREFERRED, w=0, max_pool_size=10)
其中mongo\u主机是:'host1:27017,host2:27017,host2:27017'
在所有服务器中。在
因此,我总共有12个MongoClient
个实例,max_pool_size=25
(每个服务器有4个),其他12个实例有max_pool_size=10
(每个服务器也有4个)
我的问题是:
当Zato集群启动并开始接收请求(每个最多10 rq/s,使用简单的循环法进行平衡),就会创建一组新的连接,然后在每个mongos中保持大约15-20个永久打开。在
然而,在某个随机点,在没有明显原因的情况下,三个mongos
中的几个连接突然同时断开,然后连接总数随机变化,直到几分钟后(从5到10)再次稳定下来。
尽管发生了这种情况,尽管我在MongoDB日志中没有看到慢查询(无论是在mongos还是在mongod中),平台的性能都会严重降低。在
我一直在隔离问题,并已尝试:
'localhost:27017
',以查看问题是否仅出现在其中一个客户端中。这个问题一直存在,并且它同时影响着这三个mongos
,因此它看起来像是服务器端的东西。在最后的问题是:
MongoClient
允许max_pool_size
的定义,但我没有找到对min_pool_size
的任何引用。有可能这样定义吗?也许将连接数设为静态可以解决我的性能问题。在关于MongoDB版本的注意事项:我目前运行的是MongoDB 2.6.3,但是在从2.6.1升级之前就已经遇到了这个问题,所以在上一个版本中并没有介绍这个问题。在
目前没有回答
相关问题 更多 >
编程相关推荐