我将应用程序作为一组asp.net微服务。 每个服务都由使用自托管Web Api的简单控制台应用程序呈现。 我使用Octopus Deploy将这些服务部署到服务器。 Octopus为每个服务创建Windows调度程序任务并设置
$ExecutionTimeout = New-TimeSpan -Days 9999
我可以在创建任务的Windows任务计划程序UI中找到相同的值。
我的问题是:经过一段时间的工作(大约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: 我的触发设置也已禁用:
如果我理解正确,则意味着此触发器根本没有过期。
答案 0 :(得分:0)
很难!
但我认为你会在这里找到你需要的大部分内容:https://technet.microsoft.com/en-us/library/dd315549(v=ws.10).aspx
特别是这一部分:
由于配置设置,任务已停止。可能的原因包括:
- 任务的运行时间超过了最大配置运行时间。
- 任务被配置为在计算机切换到电池电源时停止。
- 任务配置为在计算机不再空闲时停止。
- 任务被配置为在触发任务的新实例时停止。
基本上,错误消息比一个到期设置更广泛!
答案 1 :(得分:0)
<强>解决。强>
出于某种原因
$ExecutionTimeout = New-TimeSpan -Days 9999
无法按预期工作。省略此设置可以解决我的问题。