Непрерывная работа Azure WebJob с высокой загрузкой ЦП прерывает / неожиданно перезапускается при "Запросе на запуск"
Запущенный по таймеру веб-задание Azure, запущенное по уровню цен "B2 Basic", неожиданно прервано.
[01/09/2018 17:16:03 > 183d71: SYS INFO] Status changed to Running
[01/09/2018 17:16:04 > 183d71: INFO] *** WebJob Main: start ***
[01/09/2018 17:16:06 > 183d71: INFO] Found the following functions:
[01/09/2018 17:16:06 > 183d71: INFO] BB.WebJobs.Functions.ProcessQueueMessage
[01/09/2018 17:16:06 > 183d71: INFO] BB.WebJobs.Functions.DailyWorker
[01/09/2018 17:16:07 > 183d71: INFO] The next 5 occurrences of the schedule will be:
[01/09/2018 17:16:07 > 183d71: INFO] 1/10/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/11/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/12/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/13/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] 1/14/2018 12:15:00 AM
[01/09/2018 17:16:07 > 183d71: INFO] Job host started
[01/09/2018 18:15:57 > 183d71: SYS INFO] WebJob is still running
[01/10/2018 00:15:00 > 183d71: INFO] Executing 'Functions.DailyWorker' (Reason='Timer fired at 2018-01-10T00:15:00.2773840+00:00', Id=85f5338f-f568-4bec-8eaf-e51fa63dffc0)
[01/10/2018 00:15:00 > 183d71: INFO] DailyWorker started
[01/10/2018 03:05:26 > 183d71: SYS INFO] Status changed to Starting
[01/10/2018 03:05:26 > 183d71: SYS INFO] WebJob singleton setting is False
[01/10/2018 03:05:32 > 183d71: SYS INFO] Run script 'BB.WebJobs.exe' with script host - 'WindowsScriptHost'
[01/10/2018 03:05:32 > 183d71: SYS INFO] Status changed to Running
[01/10/2018 03:05:36 > 183d71: INFO] *** WebJob Main: start ***
[01/10/2018 03:05:39 > 183d71: INFO] Found the following functions:
Тот же код, который обращается к базе данных SQL и веб-страницам запросов, работал в течение нескольких месяцев локально. Я нахожусь в процессе переноса кода в Azure и планирую его непрерывную работу в WebJob. Код запускается в полночь и выполняется как ожидалось (проверено с помощью базы данных и файлов журнала), пока он не будет внезапно перезапущен.
Это видно в лог-файле выше в строке с отметкой времени: 01/10/2018 03:05:26.
Далее, просматривая журналы трассировки Куду, я нашел эту информацию:
<step title="Startup Request" date="2018-01-10T03:05:20.437" instance="183d71" url="/" method="GET" type="request" pid="1588,2,8" SCM_SKIP_SSL_VALIDATION="0" ScmType="None" >
<step title="Cleanup Xml Logs" date="2018-01-10T03:05:20.453" /><!-- duration: 15ms -->
</step><!-- duration: 31ms -->
В файле eventlog.xml нет ошибок. Просто кажется, что какой-то монитор Azure решил завершить процесс, отправив "Startup Request".
Я выполняю код в течение двух ночей, и происходит то же самое, хотя время, когда происходит событие, не одинаково (разница более 30 минут).
Вопрос: есть ли какой-то предел использования ЦП, который был достигнут? Я знаю, что процесс не использует больше памяти, чем доступно, и в этом случае исключение будет перехвачено и зарегистрировано.
Мой WebJob жаден до процессора, но, насколько я понимаю, он используется совместно с веб-приложением, и я сам решаю, как использовать ресурсы - что я не могу сделать, когда WebJobs прерывается, как это происходит. Я планирую, чтобы WebJob работал постоянно, просыпался ночью и работал 5-6 часов, пока не закончил, а затем проспал остаток дня.
Я искал похожие проблемы, и это не тот случай, когда "всегда включено" не указано, или что кто-то, кроме меня, перезапускает веб-приложение.
Любая помощь высоко ценится!!
1 ответ
Azure иногда перемещает веб-приложения по своему усмотрению. Насколько мне известно, точные причины, почему не были обнародованы. Я видел подобные вещи в своих журналах, но это не вызвало прерываний обслуживания. Чтобы убедиться, что это так, сделайте следующее:
- Перейдите к блейду управления вашего веб-приложения, на котором размещена ваша WebJob.
- Перейдите к колонке "Диагностика и решение проблем".
- Выберите Метрики для экземпляра (Приложения).
На экране "Метрики для экземпляра (приложения)" вы сможете увидеть различные показатели и счетчики производительности для каждого экземпляра веб-приложения. Вы можете включать и выключать эти экземпляры, чтобы посмотреть, как они работают в совокупности или по отдельности.
Теперь, если веб-приложение, в котором размещена ваша WebJob, было перемещено (что вызывает перезапуск, который вы видите), вы должны увидеть больше экземпляров, чем вы подготовили, и разрыв на графике. Например, если у вас выделен один экземпляр, но вы видите два или более экземпляров на этих графиках, ваше веб-приложение было перемещено. Обратите внимание, что самый длинный период просмотра для этих графиков составляет 24 часа.
Пожалуйста, отправьте обратно и дайте нам знать, если это то, что вы видите.