使用章鱼创建的Windows任务计划程序作业在一段时间后停止

时间:2017-05-25 17:11:20

标签: .net windows scheduled-tasks continuous-deployment octopus-deploy

我将应用程序作为一组as​​p.net微服务。 每个服务都由使用自托管Web Api的简单控制台应用程序呈现。 我使用Octopus Deploy将这些服务部署到服务器。 Octopus为每个服务创建Windows调度程序任务并设置

$ExecutionTimeout = New-TimeSpan -Days 9999 

我可以在创建任务的Windows任务计划程序UI中找到相同的值。

Schedule Settings

我的问题是:经过一段时间的工作(大约2周)后,我的所有服务都将停止运行。我的服务中没有例外,它们会同时发生。

我找不到原因?我将执行时间设置为超过20年!!!! 此问题在不同的Windows Server版本上重现。

我也可以在我的任务历史日志中找到此事件:

Task Scheduler terminated "{CF7BA44C-CB14-4737-89B2-C7261CFC997E}"  instance of the "\XXXX\XXX_SERVICE_NAME"  task due to exceeding the time allocated for execution, as configured in the task definition. User Action: Increase the configured task timeout or investigate external reasons for the delay.

这是由Octopus执行的PowerShell任务创建代码:

    New-Item $InstallFolder -type directory

    $FilePath = $InstallFolder + '\' + $ExecutableNameParam
    $Action = New-ScheduledTaskAction -Execute $FilePath -WorkingDirectory $InstallFolder

    $Trigger =  New-ScheduledTaskTrigger -AtStartup
    $RestartInterval = New-TimeSpan -minute 1
    $ExecutionTimeout = New-TimeSpan -Days 9999
    $Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -RestartCount 10 -RestartInterval $RestartInterval -WakeToRun -StartWhenAvailable -ExecutionTimeLimit $ExecutionTimeout
    $Principal = New-ScheduledTaskPrincipal -UserId "LOCALSERVICE" -LogonType ServiceAccount

    Register-ScheduledTask -Action $Action -Trigger $Trigger -TaskName $TaskName -Settings $Settings -Principal $Principal

如果您认为我应该在此问题中添加有关我的环境的其他信息,请在评论中告诉我。

提前致谢。

UPD: 我的触发设置也已禁用:

Trigger Settings

如果我理解正确,则意味着此触发器根本没有过期。

2 个答案:

答案 0 :(得分:0)

很难!

但我认为你会在这里找到你需要的大部分内容:https://technet.microsoft.com/en-us/library/dd315549(v=ws.10).aspx

特别是这一部分:

  

由于配置设置,任务已停止。可能的原因包括:

     
      
  • 任务的运行时间超过了最大配置运行时间。
  •   
  • 任务被配置为在计算机切换到电池电源时停止。
  •   
  • 任务配置为在计算机不再空闲时停止。
  •   
  • 任务被配置为在触发任务的新实例时停止。
  •   

基本上,错误消息比一个到期设置更广泛!

答案 1 :(得分:0)

<强>解决。

出于某种原因

$ExecutionTimeout = New-TimeSpan -Days 9999

无法按预期工作。省略此设置可以解决我的问题。