У нас есть две среды: 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?
Подводя итог моим ожиданиям:
- WebJob запускается каждый день в 3 часа утра
- с этим проблем нет, он работает какзапланировано
- WebJob должен вызывать конечную точку API "api / job / endpointname" на AppService
- Я ожидаю, что это должно быть зарегистрировано как входящий запрос в аналитических данных Application AppService
- Он не регистрируется каждый раз, он случайный
- AppService вызывается на ожидаемой конечной точке
- Первое, что мы делаем, регистрируем этот вызов в нашем журнале трассировки - этоЖурнал трассировки полностью независим от информации о приложении, это наш внутренний журнал в StorageTables
- , здесь он не регистрируется, похоже, что ничего не работало на самом AppService - так как у нас нет журналово входящих запросах + у нас ничего нет в наших журналах трассировки
- Цель конечной точки, которую должен вызывать WebJob, состоит в том, чтобы планировать PushNotifications
- , даже если мыУ нас нет записей о том, что что-либо выполнялось на AppService, Push-уведомления успешно запланированы на нашем концентраторе push-уведомлений
- , похоже, он работает на каком-то другом экземпляре AppService, если это вообще возможно
Кажется, эта проблема возникает на всех наших веб-заданиях, эта наиболее заметна.Основная проблема в том, что я не могу отследить его.
Также для параметра «Всегда включено» установлено значение «Включено».Я также пытался установить значение ServicePointManager.DefaultConnectionLimit равным 48, поскольку ранее это было только по умолчанию (2), это не помогло.