WebJob QueueTrigger TimeoutException: операция 'GetMessages' не завершена в '00: 02: 00 ' - PullRequest
1 голос
/ 25 февраля 2020

Немного связано с моей проблемой 60304305 ... Мое приложение Azure webJob обрабатывает несколько очередей, но не генерирует высокий трафик c. Тем не менее, приложение время от времени будет сталкиваться с исключением тайм-аута, и почти невозможно воспроизвести ошибку, но у меня был некоторый успех, когда я ломал точку останова внутри функции очереди и оставлял ее на некоторое время.

System.TimeoutException
  HResult=0x********
  Message=The operation 'GetMessages' with id '********-****-****-****-************' did not complete in '00:02:00'.
  Source=Microsoft.Azure.WebJobs.Extensions.Storage
  StackTrace:
   at Microsoft.Azure.WebJobs.Extensions.Storage.TimeoutHandler.<ExecuteWithTimeout>d__1`1.MoveNext() in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Extensions.Storage\TimeoutHandler.cs:line 30
   at Microsoft.Azure.WebJobs.Host.Timers.WebJobsExceptionHandler.<>c__DisplayClass3_0.<OnUnhandledExceptionAsync>b__0() in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Timers\WebJobsExceptionHandler.cs:line 54
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

  This exception was originally thrown at this call stack:
    Microsoft.Azure.WebJobs.Extensions.Storage.TimeoutHandler.ExecuteWithTimeout<T>(string, string, Microsoft.Azure.WebJobs.Host.Timers.IWebJobsExceptionHandler, System.Func<System.Threading.Tasks.Task<T>>) in TimeoutHandler.cs
    Microsoft.Azure.WebJobs.Host.Timers.WebJobsExceptionHandler.OnUnhandledExceptionAsync.AnonymousMethod__0() in WebJobsExceptionHandler.cs
    System.Threading.ThreadHelper.ThreadStart_Context(object)
    System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool)
    System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, object, bool)
    System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, object)
    System.Threading.ThreadHelper.ThreadStart()

Интересно, что пространство имен выглядит как «Microsoft. Azure .WebJobs.Host. Таймеры », но я не использую таймеры, только очереди. Кроме того, время ожидания «00: 02: 00» велико. И функции могут работать в течение нескольких часов, но затем могут потерпеть неудачу. Большие проблемы здесь:

  1. Исключения появляются «из ниоткуда», их невозможно отловить или изящно обработать, или, по крайней мере, я не знаю как, поэтому любая помощь приветствуется
  2. Дополнительная информация недоступна, я хотел бы знать, какая очередь (всегда ли она одинакова? Et c.)

Я попытался обновить ServicePointManager.DefaultConnectionLimit до большого числа, так как посоветовал здесь безуспешно, пробовал несколько разных настроек очереди (BatchSize, MaxDequeueCount и c. переход от низких к большим числам, тоже безуспешно и c.) Я устал чтобы попробовать что-то, мне нужно найти больше информации, но я не знаю как.

Версии:

  • Microsoft. Azure .WebJobs 3.0.14
  • Microsoft. Azure .WebJobs.Extensions 3.0.6
  • Microsoft. Azure .WebJobs.Extensions.Storage 3.0.10
  • Microsoft. Azure .WebJobs.Host.Storage 3.0.14
...