Windows服务“开始”

问题描述:

我有一个关键的Windows服务,我需要我的Web应用程序。Windows服务“开始”

不幸的是,Windows服务无法正常启动,但仍处于“启动”状态约7分38秒,然后失败。

当服务处于“启动”模式时,我的web应用程序正常工作。

我有一个Windows计划任务,每分钟运行一次以在必要时重新启动服务。

net start "my service" 

因此,存在的约22秒内从时,直到它再次启动的服务失败的间隙。另外,我的应用程序(取决于此服务)还需要30秒左右才能开始工作。

我故意没有命名错误的服务。我确实打开了一个单独的问题https://stackoverflow.com/questions/8470975/oracle-oc4j-service-keeps-stopping,其目的是为了真正解决问题。

在这个问题中,我不是试图解决问题,而是找到一种解决方法来尝试并保持此服务处于“开始”整个时间的状态。

什么是令人愤怒的是,直到我今天重新启动服务器,我每3分钟重新启动服务的解决方法实际上工作,没有任何应用程序停机时间。

有没有人有任何建议?我尝试将ServicesPipeTimeout的注册表项更改为86400000(24小时!),以使服务保持“启动”状态的时间更长。

+0

服务应该是在运行状态,而比开始。开始是一个过渡状态[(有关MSDN的更多信息)](http://msdn.microsoft.com/en-us/library/windows/desktop/ee126211(v = vs.85).aspx)。 – 2012-02-14 21:29:30

+0

谢谢谢瓦蒂托夫。我承认这不是最佳状态,但即使在“启动”模式下,应用程序也能正常工作。 (顺便说一句,我认为你的意思是“开始”而不是“正在运行”。) – gordon613 2012-02-15 11:52:40

+0

'sc query '报告正在运行以启动服务。但是名字并不重要。在启动状态下服务不能很长时间,SCM最终会终止。 – 2012-02-16 03:03:01

我发现了一个可能的解决我的问题,我对很不安......

我下载的WinDbg从http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279

我打开WinDbg中并没有附加到进程,并选择我的服务。

只要WinDbg处于打开状态,它似乎“持有”进程并阻止进程停止。

多久继续这样做,还有待观察,但它已经在半小时举行,现在(分别为8分钟后服务之前停止)

+2

这个解决方案持续了近一年,直到我进行了整个系统升级! – gordon613 2013-02-10 17:04:04

+1

Upvoted只是为了更新一年后的人们! ;) – FrostbiteXIII 2015-06-08 12:47:43

如果您将超时设置为24小时,且服务未启动或处于“启动”模式,则它必须崩溃或关闭。

如果您想尝试立即重新启动服务,它会崩溃,然后在服务的属性上选择“恢复”选项卡。您应该能够将服务设置为在第一次,第二次和随后出现的故障时重新启动,并将服务设置为在0分钟后重新启动,

请注意,如果Windows认为服务正常关闭,则此功能无效。

不言而喻,如果您无法获得编写服务来解决问题的人,这是最后的选择。

+0

嗨Sgmoore。感谢您对Restart的建议。这不起作用(大概是因为你写的服务没有正常关闭 - 或者在我的情况下,从未正常启动) – gordon613 2012-02-15 11:57:46

+0

实际上,如果服务没有正确关闭,**应该* *立即重启。如果它正确关闭,那么它会假定服务正在故意关闭并且不会重新启动。如果服务是'开始',那么他们应该不需要重新启动它。 – sgmoore 2012-02-15 14:36:29

+0

应该指出,为了防止误解我,这不是为了使服务正常启动或保持启动,而仅仅是在崩溃后立即重启。不幸的是,没有任何魔法按钮或设置可以使一个错误的程序停止崩溃,这就是为什么你需要让编写服务的人来看看问题。 – sgmoore 2012-02-15 14:42:35

尝试在“恢复”选项卡上为所有三个部分指定“重新启动服务”,但只有在服务异常结束时才会起作用。

我们公司面临类似的问题,我们开发了Service Protector,一个商业应用程序,可以保姆服务,并保持24/7运行。它也可能适用于你的情况。

+0

谢谢CoreTech。我目前正在尝试Service Protector。 (顺便说一句,我向你的公司发送了关于此的重要反馈,请让我知道如果你没有得到它。)[重新启动服务恢复选项卡上没有工作] Service Protector确实立即重新启动服务(这是一个优势在我的脚本上只检查每分钟),但是我的应用程序在服务重新启动的那几秒钟内,所以我理想地希望阻止服务停止而不是立即重新启动它。 – gordon613 2012-02-15 11:54:35