Azure Cosmos DB: «Частота запросов велика» для простого запроса подсчета

Я использую Cosmos DB с адаптером Mongo, получаю доступ через драйвер Ruby mongo. В настоящее время в базе данных содержится около 2,5 млн записей.

При запросе общего количества записей нет никаких проблем:

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

Но когда я пытаюсь подсчитать количество найденных записей на основе простого where, я сталкиваюсь с ошибкой 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"]}

Я понимаю, как работает ошибка, но не понимаю, как такой запрос может максимально увеличить количество единиц измерения в секунду (установлено максимальное значение 10 000), поскольку запрашиваемое поле должно быть проиндексировано (автоматически).

Любой совет будет очень признателен!


person bramj    schedule 24.11.2017    source источник
comment
У меня такая же проблема, это действительно плохо   -  person Lazaro Fernandes Lima Suleiman    schedule 27.12.2017
comment
Не совсем решение, но в итоге я включил Конвейер агрегации на странице предварительных возможностей на портале Azure. Таким образом, вы можете переписать свой запрос, чтобы использовать предложение группы, которое использует намного меньше единиц измерения в секунду.   -  person bramj    schedule 29.12.2017


Ответы (3)


Ошибка является преднамеренной, это означает, что приложение отправляет запрос в службу DocumentDB со скоростью, превышающей уровень «зарезервированной пропускной способности» для уровня сбора.

Решение состоит в том, чтобы повторить тот же запрос через некоторое время. Дополнительные решения см. В статья.

person Kapil Barad    schedule 02.01.2018

Я столкнулся с этим сегодня. Как предполагают другие, услуги Azure регулируются ценой, которую вы готовы платить. Я нашел простой ответ, который стоит чуть больше денег.

Я вошел в Azure, нашел элемент Cosmos DB, открыл базу данных и нашел коллекцию. В каждой коллекции есть опция «Масштаб». Там я поднял лимит на загрузку с предыдущего значения 1000 до максимального значения 10 000 для этой коллекции. Я запустил программу, все документы были обновлены без проблем примерно за 5 минут, а затем в Azure я снова установил ограничение на 1000.

Ежедневная цена подскочила с 1,20 доллара до 19,20 доллара примерно за 10 минут, в остальном все хорошо.

Мне потребовался бы час или два, чтобы расшифровать все шаги для повторного запуска загрузки, и еще несколько часов, чтобы после этого убедиться, что коллекция верна.

person pauljohn32    schedule 06.01.2020

Вы должны поднять лимит подключений. По умолчанию это 1000, я оставил 3000, и он перестал работать.

person Luckio    schedule 20.01.2020