Windows服务无法自动启动?


14

最近,我们的Windows Server 2008 R2服务器上出现了一些讨厌的时间同步问题。

我将其追溯到非常简单的事情:Windows时间服务未启动!时间服务未运行时,时间可能无法通过NTP同步...

Windows时间服务被设置为在服务控制面板中“自动”启动,我对此进行了两次和三次检查。我还检查了事件日志,但没有看到任何服务故障或类似情况。实际上,它看起来很像Windows定时服务在安装每周一次的Windows Updates并重新启动服务器之后从未自动启动。(这定于每个星期六晚上7点进行。)

我启动时间服务的那一刻,时间同步良好。

那么,问题来了:为什么设置为“自动”启动的服务不会自动启动?在我看来,这有点疯狂。

Answers:



4

一个可能的解释,从这个线程

以我的理解,基本上直到您或任务或硬件或网络开始启动该服务之前,该服务才会被打开。当您尝试更新时间时,将调用服务并触发事件“启动xyz服务”。完成后,它也可以关闭服务。这非常简化。这是七个速度更快的原因之一,因为许多服务仅在需要时才运行,而不是一直在等待某些东西来使用它们。实际上,您不必尝试决定您需要或不需要的服务,它们可以照顾好自己。

他正在谈论Windows 7中的新内核。

由于Windows Server 2008 R2和Windows 7确实共享同一内核,所以我想知道分辨率是否相同?

他们建议将服务设置为自动/延迟启动以解决此问题。

我仍然认为设置为自动的服务不会启动是完全疯狂的……而且我还不完全理解延迟的自动启动和自动启动之间的语义差异,但是如果可行,我想我不会抱怨


在Windows 7上可能是这种情况。我很难相信他们会在win 2k8中拥有相同的系统,尤其是在域上的计算机上,因为时间同步对于身份验证至关重要。
Zypher

好吧,我已100%确认这是一项设置为“自动”的服务,莫名其妙地没有运行。奇怪的是,所有其他设置为“自动”(是否延迟启动)的服务(保存“软件保护”)都在运行。.w32time的特殊之处在于它会阻止其自动运行?
杰夫·阿特伍德

1

不幸的是,在Windows时间里,您必须手动打开日志记录

对于“会导致服务无法自动启动的原因”,没有好的答案。唯一真正的原因是依赖项无法正确启动,或者服务在启动时发生了某种崩溃。如果没有日志,那么您的猜测就和我们的猜测一样好。

我建议在接下来的几个补丁周期中打开Windows时间日志。如果提供了服务,那么您一切都很好,如果没有,那么您可以从中得到一些帮助。

只是要注意,我已经看到不止一次的服务决定在补丁程序后无缘无故地启动,但是在第一次重新启动后就可以正常工作。


开始写评论,然后空间不足。

您实际上将从此日志中获取一些信息。

  1. 如果根本没有日志,那么它甚至都不会尝试启动。您可以从那里开始研究,每条小小的信息都可以帮助解决这类问题。

  2. 由于它是调试日志,因此您可以使用上面的链接打开它,如果它尝试启动,您应该会得到一些东西。您至少会更好地了解它为何无法成功启动。

您已经发现了成为系统管理员的最大痛苦之一:您需要日志来告诉您从哪里开始查找,但是该服务并没有达到可以生成日志的地步。经典的鸡肉和鸡蛋问题。


在这种情况下,我认为日志记录不一定会有所帮助,因为甚至没有运行日志记录。而且,一旦服务运行起来,它就很好用了!真正的问题是,为什么它不运行?
杰夫·阿特伍德

您在域中吗?您的域的时间规则是什么?
跋涉

0

谢谢,我已将Windows Server 2016上未启动的某些服务设置为延迟,并且可以正常运行,但是,我无法为防病毒服务执行此操作,因为它受到保护,无法修改。

但是,即使找到了适用于2008 R2的解决方案,我也发现该解决方案仍然有效:https : //support.microsoft.com/zh-cn/help/922918/a-service-does-not-start-and-在Windows Server 2003 2003 Windows Server 2008和Windows Server 2008 R2中记录了事件7000和7101

可能会使任何服务启动,而无需将它们设置为延迟启动。是的,它确实适用于防病毒软件。

我将在此处粘贴解决方法中最有用的部分:

要变通解决此问题,修改注册表以增加服务控制管理器的默认超时值。若要将此值增加到60秒,请按照下列步骤操作:

Click Start, click Run, type regedit, and then click OK.
Locate and then click the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
In the right pane, locate the ServicesPipeTimeout entry.

Note: If the ServicesPipeTimeout entry does not exist, you must create it. To do this, follow these steps:

    On the Edit menu, point to New, and then click DWORD Value.
    Type ServicesPipeTimeout, and then press ENTER. 
Right-click ServicesPipeTimeout, and then click Modify.
Click Decimal, type 60000, and then click OK.

This value represents the time in milliseconds before a service times out.
Restart the computer.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.