У меня серьезная проблема с функциями Azure. Позвольте мне набросать мой сценарий.
У меня есть рабочая нагрузка для обработки входящих файлов данных в контейнере больших двоичных объектов. Используя BlobTrigger, моя функция обработки берет файл, обрабатывает его и удаляет его из контейнера. Все для одного файла в течение 2 минут после обработки в плане потребления.
Там все хорошо, так что я счастлив. Теперь я хочу увеличить масштаб и предложить +/- 10 таких партий в контейнере BLOB-объектов. Среда выполнения начинает выполнять их параллельно, поэтому все еще работает, как и ожидалось. Но потом: параллельное выполнение этих функций, по-видимому, замедляется, поэтому время обработки одной рабочей нагрузки превышает максимальное. время исполнения 10 минут! Это (более чем) фактор замедления в 5 раз, в зависимости от количества предлагаемых рабочих мест.
Я что, упускаю суть здесь? Для этого были построены функции или это просто игрушка или что-то в этом роде? Сейчас я прибегнул к аннотированию своей функции с помощью [Singleton], что полностью исключает какие-либо преимущества масштабирования здесь? Как же может быть, что «безсерверные» исполнительные блоки мешают друг другу?
Я очень озадачен, любые идеи будут с благодарностью.