Функция Azure достигает тайм-аута, ничего не делая

У меня есть приложение Azure Function в Node.js с парой функций, запускаемых с помощью очереди.

Они отлично работали, пока я не увидел пару тайм-аутов в своих журналах функций. С этого момента ни одна из моих запускаемых функций на самом деле ничего не делает. Они просто продолжают тайм-аут даже перед выполнением первой строки кода, которая представляет собой context.log()-оператор, показывающий время выполнения.

LogOutput

Что могло быть причиной этого?


person Schaemelhout    schedule 05.02.2017    source источник
comment
вы пробовали перерабатывать экземпляр?   -  person 4c74356b41    schedule 05.02.2017
comment
Я попытался перезапустить службу приложений, но это не помогло.   -  person Schaemelhout    schedule 05.02.2017


Ответы (1)


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

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

По этому поводу много обсуждается, а также есть одно возможное улучшение (использование веб-пакета в модулях на стороне сервера) здесь.

Другие возможности:

  • если возможно, уменьшите количество узловых модулей
  • перейти на выделенный план вместо плана потребления (он работает в другой файловой системе, которая имеет лучшую производительность)
  • используйте C # или F #, которые не страдают от этих ограничений
person Matt Mason    schedule 05.02.2017
comment
После того, как модули потребуются один раз, функции будут выполняться быстро, потому что модули кэшируются, эта проблема началась случайным образом, поэтому я мог бы подумать, что мои модули уже должны были быть кэшированы? Я действительно вижу, что моя учетная запись хранения стоит мне немалых денег, имеет ли это какое-то отношение и к node_modules? Они постоянно перезагружают мои модули? - person Schaemelhout; 05.02.2017
comment
да. Если истечет время ожидания, узел функций Azure будет перезагружен, поскольку предполагает наличие ошибки. После перезапуска хоста модули должны быть перезагружены (это может произойти после изменения кода функции, перезапуска приложения-функции и т. Д.). Кэширование выполняется самим процессом узла в вызове require (и перезапуск убивает этот процесс). - person Matt Mason; 05.02.2017
comment
Понятно ... Спасибо за понимание! Легко ли перенести мои функции на специальный тарифный план? - person Schaemelhout; 05.02.2017
comment
@Schaemelhout - пожалуйста, не закапывайте дополнительные вопросы в комментариях (это поощряет обсуждение в комментариях, что противоречит принципам руководства StackOverflow). Лучше всего разместить новый вопрос, если он четко не задокументирован. - person David Makogon; 06.02.2017