Как я могу использовать больше, чем зарезервированное количество блоков запросов с Azure Cosmos DB? - PullRequest
0 голосов
/ 25 января 2019

Мы зарезервировали различное количество RU в секунду для наших различных коллекций.Я пытаюсь оптимизировать это, чтобы сэкономить деньги.Для каждого ответа от Cosmos мы регистрируем свойство оплаты запросов в Application Insights.У меня есть один аналитический запрос, который возвращает среднее количество единиц запроса в секунду, и один, который возвращает максимум.

let start = datetime(2019-01-24 11:00:00);
let end = datetime(2019-01-24 21:00:00);
customMetrics
| where name == 'RequestCharge' and start < timestamp and timestamp < end
| project timestamp, value, Database=tostring(customDimensions['Database']), Collection=tostring(customDimensions['Collection'])
| make-series sum(value) default=0 on timestamp in range(start, end, 1s) by Database, Collection
| mvexpand sum_value to typeof(double), timestamp limit 36000
| summarize avg(sum_value) by Database, Collection
| order by Database asc, Collection asc
let start = datetime(2019-01-24 11:00:00);
let end = datetime(2019-01-24 21:00:00);
customMetrics
| where name == 'RequestCharge' and start <= timestamp and timestamp <= end
| project timestamp, value, Database=tostring(customDimensions['Database']), Collection=tostring(customDimensions['Collection'])
| summarize sum(value) by Database, Collection, bin(timestamp, 1s)
| summarize arg_max(sum_value, *) by Database, Collection 
| order by Database asc, Collection asc

Средние значения довольно низкие, но максимумы могут быть невероятно высокими в некоторых случаях.Экстремальным примером является коллекция с резервированием 1000, средним значением 15,59 и максимальным значением 63,341 RU / s.

Мой вопрос: как это может быть?Мои запросы неверны?Троттлинг не работает?Или регулирование работает только в течение более длительного периода времени, чем одна секунда?Я проверил регулирование запросов на обзорной панели мониторинга Azure Cosmos DB (код ответа 429), но его не было.

1 Ответ

0 голосов
/ 01 февраля 2019

Я должен ответить сам.Я обнаружил две проблемы:

  1. Application Insights записывает неточную метку времени.Я добавил временную метку в качестве пользовательского измерения, и в течение определенной минуты я получаю разные секунды в своей пользовательской метке времени, но для многих из них встроенная метка времени составляет одну секунду после минуты.Вот почему я получил (ложные) пики в запросе заряда.
  2. У нас было регулирование.При просмотре регулирования запросов на портале мне приходится выбирать конкретную базу данных.Если я пытаюсь просмотреть регулирование запросов для всех баз данных, похоже, что их нет.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...