Azure WebJob работает ненадежно - PullRequest
0 голосов
/ 21 июня 2019

У нас есть две среды: Test (постановка) и Prod (производство).Почти все настройки одинаковы, мой WebJob - консольное приложение на основе .NET Framework 4.7.2.Планируется запускать в 3 часа ночи каждый день.Единственная цель этого WebJob - вызвать нашу конечную точку в нашем WebApp.

В тестовой среде WebJob работает как положено - один раз в день.Поскольку он должен вызывать наш API, я могу использовать понимание приложения и выполнять поиск входящих запросов на этой конечной точке, поэтому он запрашивался один раз в день в течение последних 30 дней:

среда тестирования за последние 30 дней

Но в среде PROD это немного интереснее.Это график за последние 30 дней для той же конечной точки, которую должен вызывать WebJob:

prod environemnt за последние 30 дней

Он вызывался только два раза - точнеевызов к конечной точке регистрировался в Application Insights только два раза.

Когда я проверяю в разделе WebJobs, WebJob находится в успешном состоянии и в журналах я вижу: «[23.05.2009 03: 00: 12> 184a66: SYS INFO] Статус изменен на Успешный »

Этот статус регистрируется только после вызова конечной точки и получения кода 202 OK, поэтому он должен что-то вызвать, поскольку задание успешно завершено.

Но одна из первых строк, обработанных в упомянутой конечной точке, - это запись в наш журнал трассировки - но ничего нет, журнал пуст - этот журнал трассировки не зависит от ApplicationInsights, это журнал в нашей таблице хранения.

Целью этого веб-задания является планирование Push-уведомлений. Когда я проверяю наш Центр уведомлений в Azure, я вижу, что что-то отправлено schedulпуш-уведомления примерно в 5 часов утра, то есть именно тогда, когда задание должно выполняться (3 часа в журнале заданий - UTC, график - UTC + 2)

Почему запрос на конечной точке не регистрируется?Он должен был вызвать его, если он был изменен на «Успешное состояние».

Почему наш журнал трассировки пуст, если код был обработан и были запланированы push-уведомления?

Есть ли вероятность, что онработает на каком-то другом экземпляре нашего WebApp?

Подводя итог моим ожиданиям:

  1. WebJob запускается каждый день в 3 часа утра
    • с этим проблем нет, он работает какзапланировано
  2. WebJob должен вызывать конечную точку API "api / job / endpointname" на AppService
    • Я ожидаю, что это должно быть зарегистрировано как входящий запрос в аналитических данных Application AppService
    • Он не регистрируется каждый раз, он случайный
  3. AppService вызывается на ожидаемой конечной точке
    • Первое, что мы делаем, регистрируем этот вызов в нашем журнале трассировки - этоЖурнал трассировки полностью независим от информации о приложении, это наш внутренний журнал в StorageTables
    • , здесь он не регистрируется, похоже, что ничего не работало на самом AppService - так как у нас нет журналово входящих запросах + у нас ничего нет в наших журналах трассировки
  4. Цель конечной точки, которую должен вызывать WebJob, состоит в том, чтобы планировать PushNotifications
    • , даже если мыУ нас нет записей о том, что что-либо выполнялось на AppService, Push-уведомления успешно запланированы на нашем концентраторе push-уведомлений
    • , похоже, он работает на каком-то другом экземпляре AppService, если это вообще возможно

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

Также для параметра «Всегда включено» установлено значение «Включено».Я также пытался установить значение ServicePointManager.DefaultConnectionLimit равным 48, поскольку ранее это было только по умолчанию (2), это не помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...