1

我们有一个不久前开发的 Windows 服务,它在远程服务器上使用大量计划任务。这似乎是一个坏主意,而且很可能确实如此,但是由于我们正在与另一家只能以这种方式激活其系统的公司合作,因此我们实际上没有更多的选择,只能选择它。

为了实现这一点,我们告诉使用 SCHTASKS 命令,它可以轻松地在另一台远程服务器上启动服务。然后,我们将此调用的输出存储到日志中。通常,我们得到这个:

2012-02-06 09:40:55 : SUCCESS: Attempted to run the scheduled task "W_PALREI".

这是我们在一切正常时收到的正常信息。有时我们会得到这个:

2012-02-20 15:53:29 : INFO: scheduled task "W_PALMO2" is currently running.
SUCCESS: Attempted to run the scheduled task "W_PALMO2".

这仍然没有什么严重的,因为我们知道该任务可能会占用一些时间,并且我们知道它很快就会恢复可用。有时我们会得到这个:

2012-02-13 08:50:03 : INFO: Scheduled task "W_PALMO2" has already been disabled.

这不好,但我们知道这意味着有人禁用了另一台服务器上的任务,因此我们可以采取相应的行动。

这就是它变得奇怪的地方。我们注意到一段时间后(大约持续运行 2 周),任务将没有响应。每次我们检查时,似乎一切都运行良好(服务正在运行,我们可以看到正在处理的数据库的内容),但任务仍然无法启动。当我们查看日志文件时,我们发现:

2012-02-22 15:50:15 : ERROR: Class does not exist.

过了一会儿,我们收到了这条消息:

2012-02-22 15:21:15 : ERROR: Not enough storage is available to process this command.

然后出现另一条消息,依此类推。过了一会儿,我们简单地得到了这个

2012-02-22 16:32:38 : 

这意味着 Process.Start 不再获得输出,或者 SCHTASKS 不再发送它,或者由于某种原因停止调用进程。我在 Google 上查看,但找不到任何关于 SCHTASKS 给出的信息,所以我怀疑 process.start 可能是问题所在

有没有人得到这个以及如何纠正这个?或者它是进程启动,是否有任何其他方法可以从远程服务器正确启动任务,前提是您有凭据......?

我们可能想在服务器上检查以诊断问题的任何其他内容?谢谢,

4

1 回答 1

1

或者它是进程启动,是否有任何其他方法可以从远程服务器正确启动任务,前提是您有凭据......?

有多种方法可以远程启动进程……我想到了几个选项:

  • 远程执行 Power Shell 脚本。但是,如果公司让您从远程位置自动执行计划任务,那么他们精通和/或愿意设置执行的可能性并不大。
  • 您的 Process.Start 调用到底是什么样的?可能还有其他一些方法来构造这个调用。

有人需要对远程机器进行更多诊断。或者只是想出一个计划,每 n 天对机器进行一次电源循环。

一些要看的地方:

  • 事件日志。看看那里是否记录了任何错误。
  • 性能监视器。监视内存使用情况以查看内存是否没有被清理。
于 2012-03-15T14:37:26.120 回答