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

Фон

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

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

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

проблема

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

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

Может ли какое-либо тело пролить свет на то, что может произойти?

Заметки

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

1 ответ

Решение

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

  • AzureConsumptionXXX
  • AzureComputeXXX

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

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