我正在使用带有Mongo适配器的Cosmos DB,通过Ruby mongo driver访问。目前,db中有大约250万条记录。
查询记录总数时,没有任何问题:
2.2.5 :011 > mongo_collection.count
D, [2017-11-24T11:52:39.796716 #9792] DEBUG -- : MONGODB | XXX.documents.azure.com:10255 | admin.count | STARTED | {"count"=>"xp_events", "query"=>{}}
D, [2017-11-24T11:52:39.954645 #9792] DEBUG -- : MONGODB | XXX.documents.azure.com:10255 | admin.count | SUCCEEDED | 0.15778699999999998s
=> 2565825
但是当我尝试根据简单的位置计算找到的记录数量时,我遇到了Request rate is large
错误:
2.2.5 :014 > mongo_collection.find(some_field: 'some_value').count
D, [2017-11-24T11:56:11.926812 #9792] DEBUG -- : MONGODB | XXX.documents.azure.com:10255 | admin.count | STARTED | {"count"=>"some_table", "query"=>{"some_field"=>"some_value"}}
D, [2017-11-24T11:56:24.629659 #9792] DEBUG -- : MONGODB | XXX.documents.azure.com:10255 | admin.count | FAILED | Message: {"Errors":["Request rate is large"]}
ActivityId: 0000-0000-0000-000000000000, Request URI: /apps/XXX/services/XXX/partitions/XXX/replicas/XXX/, RequestStats: , SDK: Microsoft.Azure.Documents.Common/1.17.101.1 (16500), Message: {"Errors":["Request rate is large"]}
我理解错误是如何工作的,但是我不明白这样的查询如何最大化RU / s(设置为最大值10,000),因为我要查询的字段应该被索引(自动)
非常感谢任何建议!
答案 0 :(得分:5)
错误是设计错误,这意味着应用程序正在以高于收集层的“保留吞吐量”级别的速率向DocumentDB服务发送请求。
解决方案是在一段时间后重试相同的请求。有关更多解决方案,请查看此article。
答案 1 :(得分:0)
我今天遇到了这个。就像其他人建议的那样,Azure服务受您愿意支付的价格管制。我发现一个简单的答案只是花了一点钱。
我登录到Azure,找到了Cosmos DB项目,打开了数据库并找到了集合。每个集合都有一个“比例”选项。在那儿,我将一个集合的上传限制从以前的1,000个提高到最大10,000个。我运行了该程序,所有文档在大约5分钟内都得到了顺利更新,然后在Azure中将限制重新设置为1,000。
每天的价格从$ 1.20上涨到$ 19.20约10分钟,否则一切都很好。
我需要一两个小时才能弄清重新运行上传文件的所有步骤,还要花几个小时才能确保之后的收藏正确。
答案 2 :(得分:0)
您必须提高连接限制。默认情况下为1000,我保留为3000,然后停止失败。