Как получить полную пропускную способность сбора в среде CosmosDB Multi-Master, где partitionKey уже имеет большую мощность? - PullRequest
0 голосов
/ 25 декабря 2018

Обзор

У меня есть процесс регистрации / регистрации пользователей, который я в настоящее время пытаюсь оптимизировать и лучше понять, прежде чем перейти к гораздо большим нагрузочным тестам.

Сборник тестов: (500 RU)
PartitionKey: tenant_email
Multi-Master: 5 регионов

Ниже находится единичный регионстатистика по базе данных только с одним регионом.

  • Шаг 1 - Зарегистрировать нового пользователя (10.17 RU)
  • Шаг 2 - Обновитьнекоторые данные (3,4 RU)
  • Шаг 3 - Создание подписки (13,23 RU)
  • Шаг 4 - Обновление некоторых данных (3,43 RU)
  • Шаг 4 - обновить некоторые данные (3,43 RU)
  • Шаг 5 - обновить некоторые данные (3,83 RU)
  • Шаг 6 - Обновить токен доступа (3.13RU)
  • Итого: ~ 40,5 RU на борт

Проблема

Ожидаемая пропускная способность: ~ 12 регистраций (84req /с)
Фактическая пропускная способность: Тяжелое ограничение скорости ~ 3 регистрации в секунду (21 рег / сек).На ~ 40RU кажется, что я получаю только 120RU от 500?

enter image description here

enter image description here

Распределение памяти ниже, а параметр partitionKey должен быть достаточно уникальным, чтобы равномерно распределять нагрузку по коллекции для максимизации пропускной способности?не знаю, почему значение Max Consumed RU / s такое высокое.

enter image description here

Распределение хранилища для коллекции и выбранного ключа partitionKey выглядит равномерно распределенным.

enter image description here

Обновление - при недостаточном использовании

Вот снимок экрана, показывающий коллекцию с одним разделом 500 RU.Из этого ясно видно, что максимальное потребляемое количество RU на раздел все время находилось на уровне ~ 350, но мы замечаем жесткое ограничение скорости, даже если мы никогда не достигаем 500 RU / с.

enter image description here

1 Ответ

0 голосов
/ 25 декабря 2018

Вероятно, ваше ограничение скорости связано с тем, что у вас нет доступа ко всем 500 RU в одном физическом разделе.

Внимательно посмотрите на свой 2-й график, который подсказывает, что, вероятно, происходит:

Коллекция UsersTest имеет 5 диапазонов ключей раздела.Предоставленная пропускная способность равномерно распределяется по этим разделам (100 RU / с на раздел).

Под покровом Cosmos DB создает набор физических разделов, а ваш RU распределяется по этим физическим разделам.В вашем случае Cosmos DB создал 5 физических разделов.

Логические разделы могут быть сопоставлены с любым из 5 физических разделов.Таким образом, возможно, что во время вашего теста более одного логического раздела были сопоставлены одному и тому же физическому разделу.И учитывая, что каждый физический раздел будет заполняться примерно с 2-3 регистрациями в секунду, это, вероятно, объясняет, почему вы видите удушение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...