如何使用python增加Mongodb的连接池大小

时间:2015-08-06 06:49:27

标签: python mongodb connection-pooling

我使用Mongodb作为项目数据库,我每秒向mongodb发送1000个请求。我得到一个观察结果,与队列中最后一个请求相比,队列前面的请求工作得更快。我担心如果打电话给mongodb增加它会消耗更多时间。我认为这可以管理使用池连接。如果是,请让我知道我们如何使用python增加池大小。如果没有建议我任何其他选择

以下是查找字段 snippetid 的文档的一些结果,我有索引

有些早期发送的请求

db.collection.find({'snippetid': '55a0466a414353801e4ff16a'})

Time Taken 0.00563097000122

db.collection.find({'snippetid': '559417cd5217d572fa120a21'})

Time Taken 0.00330901145935

队列中最后一些请求

db.collection.find({'snippetid': '55a4b1d45217d5e7609e19b2'})

Time Taken 1.95499396324

db.collection.find({'snippetid': '55a059d5be98fa09168b63f9'})

Time Taken 1.96221590042

2 个答案:

答案 0 :(得分:5)

嘿,你可以使用pymongo增加python中的池大小。 语法

from pymongo import MongoClient
client = MongoClient('host', port, maxPoolSize=200)

有关详细信息,请查看link

答案 1 :(得分:2)

来自MongoClient的pymongo文档:

  

maxPoolSize(可选):池将同时打开的最大连接数。如果设置了此选项,则如果池中存在maxPoolSize未完成的连接,则操作将被阻止。默认为100.不能为0.

鉴于签名:

 pymongo.mongo_client.MongoClient(
     host='localhost', port=27017, document_class=dict,
     tz_aware=False, connect=True, **kwargs)

因此,在该调用中添加maxPoolSize所需的值将设置连接池的大小。

请注意,"没有任何内容是免费的" ,这在客户端和服务器上都是明显的成本,以维持大量的连接。对于高请求负载,您可以查看备用处理方法,或者至少平衡负载。