使用睡眠运行程序与使用任务计划程序进行计划

使用睡眠运行程序与使用任务计划程序进行计划

我有一个 Java 程序,用于检查数据库中的值是否每分钟都发生变化。如果值发生变化,程序将执行一项任务。

当程序仅检查数据库中的值时,从 cmd 运行该程序大约需要 7 秒。

最好的解决方案是什么?每分钟使用任务计划程序安排程序,还是让程序持续运行并在每次检查之间休眠 1 分钟?使用任务计划程序进行调度是否耗费资源?

操作系统是Windows Server 2008R2。

答案1

当您使用调度程序按计划运行它时,您每分钟都会启动一个新的程序实例。
而且新程序每次都必须打开和关闭数据库。与一直运行且每分钟仅轮询一次(已打开的)数据库连接进行检查的程序相比,这对服务器和数据库的资源消耗更大。
另一方面……持续运行的程序可能会随着时间的推移慢慢泄漏内存或其他资源。如果数据库在程序运行时由于某种原因脱机/无法访问,它必须能够从中恢复。调度程序显然不必处理这个问题。

您的系统性能可能足够好,因此无论使用哪种版本都不会出现明显的差异。

所以这确实取决于整个环境。我无法给出一般的“最佳实践”建议。

答案2

从我自己的经验来看,无论你运行的脚本是什么,任务计划程序都会影响你的系统。任务计划程序在后台启动任务时效果很好,但它不会全速运行。

任务调度程序本身的使用频率越高,开销就越大,因此我强烈建议不要使用任务调度程序。即使您使用任务调度程序只启动一次任务,然后任务不断调用自身,也会有开销。

因此,我强烈建议使用启动脚本来激活循环,​​并每分钟执行一次检查。

不过,您可能想研究其他方法来做到这一点,并且您可能想检查 5 分钟的间隔是否不是一个很大的妥协。

数据库中的值在某处发生了更改。该进程是否也无法执行该操作,或者在服务器端启动脚本?

相关内容