2016-04-18 2 views
1

У меня есть «Triggered» Webjob in Azure, который застрял на «Running» Это было в этом состоянии в течение двух дней, его планируется запустить каждые 5 минут.Остановить заблокированный по требованию/запущенному Azure Webjob

Этот Webjob ранее работал без проблем. Эта проблема, похоже, произошла в субботу (мой часовой пояс), а это значит, что никто не играл с ней, когда она сломалась.

То, что я пытался до сих пор:

  1. Перезапуск адрес сайта, Webjob прилагается к.
  2. Выполнение задания вручную из лазурного портала *
  3. Повторного развертывания сайта
  4. Установки WEBJOBS_STOPPED = 1 в App Settings
  5. Изменение времени график от 5 минут до 6 минут

* Это дало me error:

Could not run job: 'EnrolmentProcessor'. 
Please try again. If the problem persists, contact support. 

Все это не повлияло на процесс, и оно все еще застревает в состоянии «Запуск».

Я посмотрел на папках с отладочной консоли куды и заметил следующее:

процесса, в котором она вышла из строя этих строки журнала:

[04/15/2016 22:20:02 > 1e4ce4: SYS INFO] Status changed to Initializing 
[04/15/2016 22:20:02 > 1e4ce4: SYS INFO] Run script 'TERACC.WebJob.EnrolmentProcessor.exe' with script host - 'WindowsScriptHost' 
[04/15/2016 22:20:02 > 1e4ce4: SYS INFO] Status changed to Running 

предыдущий процесс, который удался имеет эти лога:

[04/15/2016 22:15:01 > 1e4ce4: SYS INFO] Status changed to Initializing 
[04/15/2016 22:15:01 > 1e4ce4: SYS INFO] Run script 'TERACC.WebJob.EnrolmentProcessor.exe' with script host - 'WindowsScriptHost' 
[04/15/2016 22:15:01 > 1e4ce4: SYS INFO] Status changed to Running 
[04/15/2016 22:18:51 > 1e4ce4: SYS INFO] Status changed to Success 

Там находится файл с именем triggeredJob.lock который имеет ВОЛП мычание StackTrace в момент отказа:

2016-04-15T22:20:02 at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) 
    at System.Environment.get_StackTrace() 
    at Kudu.Core.Infrastructure.LockFile.WriteLockInfo(Stream lockStream) 
    at Kudu.Core.Infrastructure.LockFile.Lock() 
    at Kudu.Core.Jobs.TriggeredJobRunner.StartJobRun(TriggeredJob triggeredJob, JobSettings jobSettings, String trigger, Action`2 reportAction) 
    at Kudu.Core.Jobs.TriggeredJobsManager.InvokeTriggeredJob(String jobName, String arguments, String trigger) 
    at Kudu.Services.Jobs.JobsController.InvokeTriggeredJob(String jobName, String arguments) 
    at lambda_method(Closure , Object , Object[]) 
    at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters) 
    at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) 
    at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) 
    at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Controllers.ApiControllerActionInvoker.InvokeActionAsyncCore(HttpActionContext actionContext, CancellationToken cancellationToken) 
    at System.Web.Http.Controllers.ApiControllerActionInvoker.InvokeActionAsync(HttpActionContext actionContext, CancellationToken cancellationToken) 
    at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>b__0(ActionInvoker innerInvoker) 
    at System.Web.Http.Controllers.ActionFilterResult.<>c__DisplayClass10`1.<InvokeActionWithActionFilters>b__f() 
    at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecutedAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func`1 continuation) 
    at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Filters.ActionFilterAttribute.ExecuteActionFilterAsyncCore(HttpActionContext actionContext, CancellationToken cancellationToken, Func`1 continuation) 
    at System.Web.Http.Filters.ActionFilterAttribute.System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func`1 continuation) 
    at System.Web.Http.Controllers.ActionFilterResult.<>c__DisplayClassb.<>c__DisplayClassd.<InvokeActionWithActionFilters>b__9() 
    at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecutedAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func`1 continuation) 
    at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Filters.ActionFilterAttribute.ExecuteActionFilterAsyncCore(HttpActionContext actionContext, CancellationToken cancellationToken, Func`1 continuation) 
    at System.Web.Http.Filters.ActionFilterAttribute.System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func`1 continuation) 
    at System.Web.Http.Controllers.ActionFilterResult.<>c__DisplayClassb.<>c__DisplayClassd.<InvokeActionWithActionFilters>b__9() 
    at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Controllers.ActionFilterResult.ExecuteAsync(CancellationToken cancellationToken) 
    at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Controllers.ExceptionFilterResult.ExecuteAsync(CancellationToken cancellationToken) 
    at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) 
    at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    at System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.HttpServer.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    at System.Web.Http.WebHost.HttpControllerHandler.<ProcessRequestAsyncCore>d__0.MoveNext() 
    at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) 
    at System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore(HttpContextBase contextBase) 
    at System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsync(HttpContext context) 
    at System.Web.HttpTaskAsyncHandler.<>c__DisplayClass4_0.<System.Web.IHttpAsyncHandler.BeginProcessRequest>b__0() 
    at System.Web.TaskAsyncHelper.BeginTask(Func`1 taskFunc, AsyncCallback callback, Object state) 
    at System.Web.HttpTaskAsyncHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
    at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error) 
    at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) 
    at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) 
    at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) 
    at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) 
    at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus) 
    at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) 
    at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) 

Это указывает мне, что что-то пошло не так при попытке обработать Webjob и оставил его в этом коррумпированном государстве.

Я не беспокоюсь о потере данных в процессе, который «работает», мне просто нужно снова запустить Webjob. Что я могу сделать, чтобы прервать тот, на котором он застрял, и заставить его снова запуститься?

+0

Можете ли вы поделиться своим именем веб-приложения прямо или [косвенно] (https://github.com/projectkudu/kudu/wiki/Reporting-your-site-name-without-posting-it-publicly)? Это поможет расследовать. Благодаря! –

+0

@DavidEbbo - уверенный предмет. Вот сайт с той же подпиской: http://testforfurtherinfo.azurewebsites.net/. Сайт с ошибкой webjob заканчивается в тесте (not testapi). Застрявший Webjob называется EnrolmentProcessor – madbrendon

+0

, кажется, что существует мертвая блокировка. Можете ли вы показать нам код? –

ответ

2

Кажется, что он попал в плохое состояние. Я думаю, что ключ должен удалить этот файл triggeredJob.lock. Проблема в том, что он заблокирован и не хочет удаляться.

Пожалуйста, попробуйте выполнить следующие действия, чтобы убедиться, что позволяет удаление:

  • Остановить как сайт и сайт SCM с помощью этих special steps
  • соединение с помощью FTP и удалить файл блокировки
  • Restart сайт (например, с портала)

Если это не сработает, попробуем что-нибудь еще.Я хотел бы понять первопричину, но давайте попробуем сначала запустить вас.

+0

Привет @DavidEbbo, спасибо за вашу помощь. К сожалению, это все еще не сработало. При попытке удалить файл блокировки я все равно получаю следующую ошибку: «550 Процесс не может получить доступ к файлу, потому что он используется другим процессом». – madbrendon

+0

Я попал на виртуальную машину и смог закрыть дескриптор, а затем переименовать файл (я сохранил его как 'triggeredJob.lock.old' для записи). Но я удивлен, что закрытие сайта SCM не сработало, поскольку блокировка проводилась на w3wp сайта SCM. Чтобы убедиться, вы использовали технику в ссылке, которую я дал, и изменили как «состояние», так и «scmSiteAlsoStopped»? Во всяком случае, мы надеемся, что все вернулось в хорошее состояние. Пожалуйста, подтвердите. –

+0

Одна вещь, которую я заметил, это то, что этот WebJob, кажется, занимает 7 минут или больше, чтобы запускаться, но назначается чаще всего. Это приведет к сбою некоторых прогонов планировщика с помощью 409 CONFLICT, который затем будет повторен. Это, вероятно, безвредно, но может быть лучше запланировать немного реже. –

Смежные вопросы