触发器 – Windows任务计划程序错误地为每个触发器生成多个实例(但需要能够并行运行多个实例)

我有一个任务设置,通过
Windows任务计划程序(操作系统:64位Windows Server Standard SP2)每30分钟运行一个可执行文件.此任务需要能够同时运行其自身的多个实例,因此选择此设置:“如果任务已在运行,则应用以下规则:并行运行新实例”. (原因:任务处理队列表中的记录,该记录可能为空或包含数十万条记录.每个任务实例保留一大块记录,因此实例不会发生冲突)

问题是,该任务在每个触发间隔产生多个NEW实例.它应该每30分钟才启动一个新实例.通常它会生成2,3或4个或更多新实例.此时,可执行文件可以处理重复的新实例而不会出现重大错误,但是服务器正在完成比它需要的更多的工作,并且它只是让我觉得任务调度程序以这种方式行为不端.这是我到目前为止尝试修复的内容:

>删除并重新创建任务(多次)
>重新启动服务器
>安装此修补程序:http://support.microsoft.com/en-us/kb/2461249
>设定为每30分钟无限期运行一次
>设置每天运行30分钟,持续一天
>设置“跨时区同步”= true
>设置“以最高权限运行”= true
>设置“延迟任务最多为[X]秒的随机延迟”= false(多个新的 – 实例在同一秒内全部生成)
>设置“延迟任务最多为[30]秒的随机延迟”= true(而不是在同一秒内触发,多个新实例在30秒范围内触发)
>设置“如果任务失败,则每1分钟重新启动”= true
>设置“如果任务失败,则每1分钟重启一次”= false
>设置“错过预定开始后尽快运行任务”= false(如果设置为true,则问题更严重)

更令人费解的是:此服务器上的其他一些任务具有相同或相似的设置,并且没有此问题.他们在修复程序之前遇到了问题,但在修补程序之后它很少见.除了这一项任务.究竟是什么问题呢?

导出的任务设置如下(使用XXXX替换敏感信息).我将这一点与另一个没有问题的类似任务进行了比较.唯一的区别是:工作任务有不同的作者,不同的exe文件,每5分钟而不是每30分钟运行一次.

我打算把它当作微软有一天需要解决的错误,但我想在放弃之前我会在这里提供它进行审查.

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2014-08-27T10:09:33.7980839</Date>
    <Author>XXXX\XXXX</Author>
    <Description>Links newly downloaded images to products. Resizes and uploads different sizes to XXXX. Updates relevant tables. Logs errors.</Description>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <Repetition>
        <Interval>PT30M</Interval>
        <Duration>P1D</Duration>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2015-02-11T19:06:00Z</StartBoundary>
      <Enabled>true</Enabled>
      <RandomDelay>PT30S</RandomDelay>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>XXXX\XXXX</UserId>
      <LogonType>Password</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle> 
    </IdleSettings>
    <MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>true</WakeToRun>
    <ExecutionTimeLimit>P1D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\XXXX\XXXX\XXXX.exe</Command>
    </Exec>
  </Actions>
</Task>

最佳答案 我在同一条船上,有一次任务开火3次,另一次开火9次.但也是一堆只按预期发射一次.安装此修补程序后问题仍然存在.

在我的所有研究都没有出现好的线索后,我的下一步将是与微软开启一个支持案例.在这样做之前,我想我会尝试删除并重新创建我已安装补丁的任务.我开始只删除并重新创建触发器(设置为每天运行一次)并将其设置为不同的时间.宾果,我的问题得到解决!

所以我不知道密钥是什么,是否在安装补丁后删除并重新创建触发器,或者是否正在改变时间,但两者都有效.

希望这可以帮助!

点赞