Приложениям логики Azure требуются часы / дни для запуска функций Azure

Фон

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

Каждое приложение логики запускается в определенное время в течение ночи с разницей в час.

Функции Azure написаны с использованием асинхронный шаблон и вызовите внешние API.

Проблема

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

Однако иногда они вынуждают меня отменить их заезд в течение нескольких часов или дней.

введите здесь описание изображения

Может ли кто-нибудь пролить свет на то, что это могло происходить?

Примечания

  1. Я использую новейшие пакеты nuget для расширения надежных функций.
  2. При отладке функции всегда выполняются своевременно
  3. Я заметил, что функции иногда застревают в ожидании.

comment
Во-первых, если вы посмотрите на аналитику приложений, не выдают ли ваши функции ошибки, из-за которых их выполнение занимает много времени? Во-вторых, тестовое развертывание в новом приложении логики и экземпляре функции, поскольку это кажется очень своеобразным сценарием.   -  person Murray Foxcroft    schedule 25.01.2019
comment
Вы можете щелкнуть историю запусков, проверить логику, какой этап застрял.   -  person George Chen    schedule 28.01.2019
comment
@MurrayFoxcroft Никаких исключений не выбрасывается. Однако у меня есть вызов зависимости от таблицы хранилища, которую я исследую.   -  person Dan Cundy    schedule 28.01.2019
comment
@MurrayFoxcroft Да, это приложение-функция, которое застревает, все остальные шаги приложения логики выполнены успешно.   -  person Dan Cundy    schedule 28.01.2019
comment
Удачи. Разберите все ошибки и убедитесь, что вы не проглатываете какие-либо исключения, попробуйте сценарии типа {‹stuff›} catch {}, и вы должны быть ближе к решению.   -  person Murray Foxcroft    schedule 28.01.2019
comment
Привет, Дэн, я хотел бы поближе взглянуть на то, что происходит с вашими долговечными функциями. Я открыл проблему в нашем репозитории GitHub, чтобы отслеживать это; Не могли бы вы перескочить туда и предоставить информацию под заголовком «Информация о расследовании», чтобы мы могли провести расследование? Спасибо!   -  person Katy Shimizu    schedule 29.01.2019


Ответы (1)


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

  • Потребление AzureXXX
  • AzureComputeXXX

Это приводит к тому, что два приложения-функции крадут сообщения друг у друга. Если функции в одном приложении не существуют в другом приложении, то очень возможно, что оркестровки застрянут в таком состоянии ожидания.

Самый простой способ смягчить это - дать каждому приложению-функции уникальное имя концентратора задач. Дополнительную информацию см. В документации Центров задач: https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-task-hubs.

person Chris Gillum    schedule 01.02.2019