我通过Windows任务计划程序(操作系统:64位Windows Server Standard with SP2)将任务设置为每30分钟运行一次可执行文件。此任务需要能够同时运行自身的多个实例,因此选择了此设置:“如果任务已经在运行,则应用以下规则:并行运行新实例”。(原因:该任务处理队列表中的记录,该队列表可能为空或包含数十万条记录。每个任务实例都保留一大块记录来处理,所以实例不会冲突)
问题是,该任务在每个触发间隔生成多个 NEW 实例。它每 30 分钟只触发一个新实例。通常,它会生成 2、3、4 个或更多新实例。此时,可执行文件可以处理重复的新实例而不会出现重大错误,但是服务器正在做比它需要的更多的工作,并且它只是让我烦恼,直到任务计划程序以这种方式行为异常。以下是我到目前为止尝试修复的问题:
更令人费解的是:此服务器上的一些其他任务具有相同或类似的设置,并且没有此问题。他们在修补程序之前就有这个问题,但修补程序之后就很少了。除了这个任务。究竟是什么问题?
导出的任务设置如下(XXXX替换敏感信息)。我将这一点与另一个没有问题的类似任务进行了比较。唯一的区别是:工作任务有不同的作者,不同的exe文件,每5分钟运行一次,而不是每30分钟运行一次。
我打算把这记为微软某天需要修复的一个bug,但在放弃之前,我想我应该在这里提出来进行审查。
<?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次。但也有一群像预期的那样只开了一枪。安装修补程序后问题仍然存在。
在我所有的研究都没有发现好的线索之后,我的下一步将是与微软展开支持案例。在这样做之前,我想我会尝试删除并重新创建任务,因为我已经安装了补丁。我开始只删除并重新创建触发器(设置为每天运行一次),并将其设置为不同的时间。对了,我的问题解决了!
所以我不知道关键是什么,它是在安装补丁后删除和重新创建触发器,还是正在改变时间,但两者都有效。
希望这有帮助!
我试着用一个实例并行运行许多计划任务,每一个我这样配置任务 但是有很多实例每秒开始,而第一个实例尚未完成。是否可以同时配置任务运行的一个实例?我的豆子配置在Spring调度器.xml
我正在使用 Kubernetes 作为容器编排器构建一个微服务应用程序。该应用程序现已启动并运行,但我有其他问题。那是在我的服务中,我每天都有一个计划任务运行,当服务部署时,将运行多个服务实例(通过设置副本编号),创建多个同时运行的任务。我期望的是只有一个服务任务实例将运行,而不是多个实例。有什么技术可以处理这种情况吗? 库伯内特斯 Asp.net核心构建微服务 CI/CD的基岩实现 Fabrik
自 1.5 后就过时了 在 Hangfire 1.5 之后,您不需要额外的配置来支持多个服务实例处理同一个后台任务,可以跳过本文了。现在使用 GUID 生成服务器标识符,因此所有实例名称都是唯一的。 可以同时在一个程序、机器或多台机器上运行多个服务器实例。每个服务实例使用分布式锁来执行协调逻辑。 在上述情况中,每个Hangfire服务器都有一个唯一的由两部分组成的供默认值标识符。最后一部分是一个程
我们有一个Spring Boot应用程序,并有计划的任务。 我们希望在多个服务器上部署我们的应用程序,因此将有多个应用程序实例。 如何将 Spring 配置为仅在指定的服务器上运行计划任务?
我们有一个spring boot应用程序和计划任务。 我们希望 在多个服务器上部署我们的应用程序 ,因此应用程序的多个实例。 如何配置spring在同时运行的多个实例上运行调度任务? 例如:一个应用程序在上午12点部署在第一个服务器实例中,任务计划在12点运行。同一个应用程序部署在第二个服务器实例中,时间为凌晨12点03分,由于部署任务存在差异,因此也在凌晨12点33分开始执行相同的cron表达式
我正在将Vue集成到一个表单网站上,这意味着如果页面上有多个表单,我必须创建Vue应用程序的几个实例。所有实例共享相同的Vuex存储。 我创建了一个Vuex模块,这样每个Vue实例都可以有自己的本地状态。我的主要目标是防止一个Vue实例更新另一个Vue实例的状态。 这是我的Vuex模块 创建我的Vuex实例: 我正在阅读Vuex文档,它说你需要使用一个返回模块状态的函数,这就是我正在做的。但是,当