我正在使用带有Mongo适配器的Cosmos DB,通过Ruby mongo driver访问。目前db中有大约2.5M的记录。
查询记录总量时,没有任何问题:
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),因为我要查询的字段应该被索引(自动)。
任何建议将不胜感激!
错误是设计错误,这意味着应用程序正在以高于收集层的“保留吞吐量”级别的速率向DocumentDB服务发送请求。
解决方案是在一段时间后重试相同的请求。有关更多解决方案,请查看此article。