我使用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
答案 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
所需的值将设置连接池的大小。
请注意,"没有任何内容是免费的" ,这在客户端和服务器上都是明显的成本,以维持大量的连接。对于高请求负载,您可以查看备用处理方法,或者至少平衡负载。