Ограничить число одновременных функций Azure - PullRequest
0 голосов
/ 03 октября 2018

У меня есть эта настройка в Azure.

  • 1 Сервисная шина Azure
  • 1 База данных SQL Azure
  • 1 Динамический план обслуживания приложения
  • 1 Функция Azure

Я пишу сообщения в служебной шине, моя функция срабатывает при получении сообщения и записи в базу данных.

У меня огромное количество сообщенийдля обработки, и у меня есть это исключение:

Предел запросов для базы данных составляет 90 и был достигнут

Я копаю здесь на SO и в документах, и я нашелэтот ответ от Пола Баттума: https://stackoverflow.com/a/50769314/1026105

Вы можете использовать параметры конфигурации в host.json, чтобы управлять уровнем параллелизма, с которым ваши функции выполняются для каждого экземпляра, и настройкой максимального масштабирования, чтобы контролировать, сколько экземпляровВы масштабируете до.Это позволит вам контролировать общую нагрузку на вашу базу данных.

Какова стратегия ограничения функции, поскольку она может быть ограничена:

  • уровень параллелизма, выполняемый вашими функциями на каждый экземпляр
  • количество экземпляров

Спасибо, ребята!

1 Ответ

0 голосов
/ 03 октября 2018

Обращайтесь к использованию Durable Extensions для функций Azure, где вы можете управлять количеством функций оркестратора и действий.Вам нужно будет немного изменить свой дизайн, но тогда вы получите гораздо больший контроль над параллелизмом.

{
  "version": "2.0",
  "durableTask": {
    "HubName": "MyFunctionHub",
    "maxConcurrentActivityFunctions": 10,
    "maxConcurrentOrchestratorFunctions": 10
  },
  "functionTimeout": "00:10:00"
}
...