2016-04-06 4 views
5

Мне интересно, как масштабирование работает с функциями Azure относительно вывода в Document DB.Azure Function & Document DB

В основном, что происходит, когда Document DB возвращает 429, потому что я превысил выделенную пропускную способность? Я спрашиваю, потому что, когда у меня был самый низкий уровень функций Azure в сочетании с самым низким уровнем Document DB и продолжал вызывать функцию 1000 раз за 20 секунд, я видел только 700-800 фактических документов, вставленных в мою коллекцию документов db. Когда я масштабировал Document DB до максимума с тем же самым низким уровнем функции снова, я получил только 700-800 документов в моей коллекции doc db. Однако, когда я масштабировал функцию до max с документом db в max, я получаю все 1000. Когда я отбрасываю doc db до минимума, я получаю только 300 штук ... хотя похоже, что я заблокировал документ db, и что он все равно повторяет попытку вставки до тех пор, пока это не удастся.

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

ответ

6

Да, в настоящее время он повторяет попытку 429, ожидая предлагаемого количества времени в соответствии с ответом DocDB. В настоящее время нет абсолютного тайм-аута, поэтому повторы будут продолжаться до тех пор, пока они не пройдут (я проверяю прямо сейчас, если это ожидаемое поведение).

В вашем первом сценарии, если вы подождете достаточно долго, чтобы дроссель был удален, все ли в итоге появятся?

Я хотел бы попробовать воспроизвести это - вы вставляете 1000 предметов в очередь, прежде чем включать свою функцию? Или назвать это каким-то другим способом?

Конкретная повтора код, который работает здесь, если вам интересно: https://github.com/Azure/azure-webjobs-sdk-extensions/blob/master/src/WebJobs.Extensions.DocumentDB/DocumentDBUtility.cs#L36

+0

Я запуская функцию, так как я не верю, что автобусное запускает в C# в настоящее время функционал (хотя это может быть изменено с помощью HTTP так как это быстро меняется в данный момент). Таким образом, я запускаю все 1000 через http, я использую loader.io, чтобы сделать это, вызывая конечную точку веб-api в моем коде, который, в свою очередь, вызывает сообщение http, чтобы вызвать функцию. Тест loader.io рассчитан на запуск 50 запросов/сек в течение 20 секунд. – steveko23

+0

Я не уверен на 100%, если функция в конечном итоге закончится. В моем последнем тесте больше не записывалось больше записей, но я все еще получал 429, когда пытался связаться с коллекцией doc db. Поэтому я удалил всю коллекцию и воссоздал ее, а затем увидел дополнительные записи, записанные в коллекцию. Таким образом, похоже, что он все еще пытался, но также казалось, что это было в странном состоянии. – steveko23

+0

Ну, после кучи тестирования сегодня я понял, что я удалил фактический сон из этого фрагмента кода в своем последнем изменении: https://github.com/Azure/azure-webjobs-sdk-extensions/commit/d39943965d45038ebddc7d4a2d729beab8a678aC# дифф-6f209fbf17e36efd4d9ebc6a285cc00cL69. Я исправлю это и добавлю некоторые тесты, чтобы убедиться, что это не повторится. Я напишу здесь, когда это исправление доступно, и я попробую еще несколько тестов, чтобы убедиться, что он работает так, как раньше. Спасибо, что подняли это! – brettsam

 Смежные вопросы

  • Нет связанных вопросов^_^