У меня есть проект с парой. NET Основан на ядре Azure Функции выполняются по расписанию. Один из них запускается каждые 10 минут и служит для обновления счетчиков просмотров, аналогично тому, как SO отслеживает представления вопросов, а другой отправляет электронные письма раз в неделю. Эти функции работали в течение года или около того. Я недавно обновил их, чтобы использовать Azure Функции SDK v3 и Azure Функции времени выполнения v3, а также. NET Core 3.1 (в основном перешел с. NET Core 2.1 на. NET Core 3.1, поэтому мне нужно было обновить время выполнения функций).
В какой-то момент я получил счет намного выше, чем обычно. Оказывается, функции, которые совместно используют одну и ту же базовую учетную запись хранения, начали совершать МНОГО API-транзакций в хранилище. Как много тысяч каждые 5 минут. Обычно каждый прогон генерирует около 100 транзакций хранения (возможно, получение функциональных файлов?), Но в какой-то момент транзакции резко скачут. После перезапуска функций транзакция сбрасывается до нормального состояния, и в течение нескольких дней все становится нормальным, затем они снова прыгают и остаются высокими до перезапуска.
Код функций не был изменен при обновлении только SDK и среды выполнения. Код функции имеет постоянное количество записей журнала (например, 7) через предоставленный SDK регистратор и не взаимодействует с хранилищем каким-либо другим способом.
У меня есть две идентичные среды: одна для тестирования и одна для производства и у обоих одна и та же проблема. Интервал, который требуется для функции до go rogue, составляет пару дней, но, кажется, каждый раз отличается. Однако, если я перезапущу одновременно и тестирование, и производство, то следующий всплеск произойдет одновременно в обеих средах, так что там будет что-то определенное c.
Согласно моему исследованию с помощью инструмента "Метрики", типы транзакций, вызывающих сбой, - это Создать. , Закрыть и ChangeNotify с некоторыми Отмена (но меньше, чем другие). Хранилище не используется ни для чего другого (на самом деле оно существует только потому, что Azure функциям требуется резервное хранилище для хранения своих файлов или чего-либо еще)
Вот код триггера на тот случай, если он уместен
[FunctionName("ViewCountUpdater")]
public static async Task RunAsync([TimerTrigger("0 */10 * * * *"/*, RunOnStartup = true*/)]TimerInfo timer, ILogger log, ExecutionContext context)
Мне кажется, что я столкнулся с ошибкой во время выполнения Azure функций или Azure функций. NET Core SDK. Кто-нибудь испытывал это или знает, как обойти это?