15

我将 Cosmos DB 与 Mongo 适配器一起使用,通过Ruby mongo driver访问。目前数据库中有大约 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),因为我正在查询的字段应该被索引(自动)。

任何建议将不胜感激!

4

3 回答 3

8

该错误是设计使然,这意味着应用程序正在以高于收集层的“保留吞吐量”级别的速率向 DocumentDB 服务发送请求。

解决方案是在一段时间后重试相同的请求。有关更多解决方案,请查看本文

于 2018-01-02T08:25:08.037 回答
1

我今天遇到了这个。正如其他人所建议的那样,Azure 服务受您愿意支付的价格的约束。我找到了一个简单的答案,只需多花一点钱。

我登录到 Azure,找到 Cosmos DB 项,打开数据库并找到集合。每个集合都有一个“缩放”选项。在那里,我将上传的限制从之前的 1,000 设置提高到了该集合的最大 10,000。我运行程序,大约 5 分钟内所有文档都顺利更新,然后在 Azure 中我将限制重新设置为 1,000。

每日价格从 1.20 美元上涨到 19.20 美元,持续了大约 10 分钟,否则一切都很好。

我需要一两个小时来破译重新运行上传的所有步骤,然后再花几个小时来确保收集正确。

于 2020-01-06T19:16:32.570 回答
1

您必须提高连接限制。默认情况下它是 1000,我把它留在 3000 并且它停止失败。

于 2020-01-20T21:35:02.913 回答