Отрегулированные запросы Azure DocumentDB
У меня есть база данных базы данных на лазурном. У меня особенно тяжелый запрос, который происходит, когда я архивирую запись пользователя и все его данные.
Я был на плане S1 и получил исключение, которое указывало, что я достигал предела RU/s. План S1 имеет 250.
Я решил перейти на Стандартный план, который позволяет вам устанавливать RU / s и оплачивать его.
Я установил его на 500 РУ / с.
Я сделал тот же запрос и вернулся и посмотрел на график мониторинга.
В то время, когда я делал этот последний тест запросов, было сказано, что я выполнил 226 запросов, и 10 из них были ограничены.
Это почему? Я установил его на 500 РУ / с. Кстати, запрос не удался.
1 ответ
Во-первых, Requests!= Request Units, поэтому ваши 226 запросов в какой-то момент привели к необходимости более 500 запрашиваемых блоков в течение одной секунды.
API DocumentDb сообщит вам, сколько RU стоит каждого запроса, поэтому вы можете проверить эту клиентскую сторону, чтобы выяснить, какой запрос вызывает проблему. Исходя из моего опыта, даже простой запрос по идентификатору часто стоит по крайней мере несколько RU. То, как вы видите, что стоимость зависит от того, какой SDK на стороне клиента вы используете. В своем коде я добавил что-то, чтобы автоматически регистрировать все запросы, которые стоят более 10 RU, просто чтобы я знал и мог принять меры.
Это также тот случай, когда инструменты мониторинга на портале довольно неадекватны, и я знаю, что команда работает над этим; вы можете видеть только общее количество RU для каждого пятиминутного интервала, но вы можете попытаться использовать 600 RU за одну секунду, и вы не можете видеть это на портале.
В вашем случае у вас может быть один большой запрос, который стоит более 500 рублей - регистрация скажет вам. В этом случае посмотрите на сгенерированный SQL, чтобы понять, почему, возможно, даже опубликуйте его здесь.
В качестве альтернативы, это может быть кумулятивным эффектом множества маленьких запросов, запускаемых в маленьком временном окне. Если вы делаете 226 запросов в ответ на одно действие пользователя (и я не знаю, так ли это), вы, вероятно, захотите пересмотреть свой дизайн:)
Наконец, вы можете повторить неудачные запросы. Я не уверен насчет других SDK, но.Net SDK повторяет запрос автоматически 9 раз, прежде чем отказаться (это может быть другим объяснением 229 запросов, попадающих на сервер). Если выбранный вами SDK не повторяется, вы можете легко сделать это самостоятельно; сервер вернет определенный код состояния (я думаю, что 429, но не совсем помню) вместе с инструкцией о том, как долго ждать перед повторной попыткой.
Пожалуйста, изучите вопросы и обновите ваш вопрос, чтобы мы могли помочь вам в дальнейшем.