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

Я видел, что эта проблема много выражена, но мне еще не удалось найти рабочее решение.

Короче говоря, мне периодически приходится выполнять большой пакет операций. Каждая операция обрабатывается функцией Azure. Каждая операция совершает вызовы в базу данных. Если у меня одновременно работает слишком много одновременных функций, это приводит к перегрузке базы данных, и я получаю ошибки тайм-аута. Итак, я хочу иметь возможность ограничить количество одновременных вызовов функций Azure, которые выполняются одновременно.

Я переключил функцию для запуска в очередь и изменил настройки хоста batchSize / newBatchThreshold / maxDequeueCount host.json, основываясь на том, что я видел в Интернете. Я также установил для приложения функции WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT значение 1 в настройках приложения-функции, чтобы предотвратить создание более одной виртуальной машины.

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

Как мне уменьшить количество одновременных операций?

1 Ответ

0 голосов
/ 08 ноября 2018

В итоге проблема заключалась в разнице в форматировании host.json в функциях V1 и V2. Ниже приведена правильная конфигурация (с использованием Microsoft.Azure.WebJobs.Extensions.Storage как минимум 3.0.1). В следующем файле host.json настраивается одно функциональное приложение для последовательной обработки сообщений очереди.

{ 
  "version":"2.0",
  "extensions": { 
    "queues": { 
      "batchSize": 1,
      "newBatchThreshold": 0 
     }
   } 
}

Настройка Настройка приложения WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT = 1 ограничивает функциональное приложение от динамического масштабирования за пределы одного экземпляра.

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