Windows服务的启动类型中的“延迟启动”有什么作用?


78

Windows服务的属性设置的自动和自动(延迟启动)之间有什么区别?也就是说,通过将我的服务设置为一项或另一项,我会获得或失去什么?

在Windows Server 2008 x64上运行服务



有关堆栈溢出的详细解答:“自动”与“自动(延迟启动)”
Bacco

Answers:


91

标记为“ 自动(延迟启动)”的服务将在所有其他指定为“ 自动”的服务启动后不久启动。以我的经验,这意味着它们是在计算机启动后1-2分钟启动的。

该设置对于减少机器启动时对资源的“疯狂抢购”最为有用。

请注意,当您同时启动20个服务时,每个服务的启动速度都会变慢,因为它们与其他服务竞争机器的宝贵资源(CPU / RAM /磁盘/网络)。也就是说,每种服务需要更长的时间才能获得!

如果您有一些至关重要的服务,则可能需要将这些服务设置为Automatic,然后将其他服务设置为Automatic(延迟启动)。这将确保关键服务尽早获得最多的资源,并尽快获得可用,而非关键服务则稍后启动(按定义可以)。


39
实际上,在处理了非延迟启动服务之后,它将对工作线程进行排队,该工作线程的默认延迟为120秒,可以被中的AutoStartDelay值覆盖HKLM\SYSTEM\CurrentControlSet\Control。当此工作线程运行时,将处理延迟启动服务,并在完成延迟后,SCM会发出信号\ BaseNamedObjects \ SC_AutoStartComplete ...
Tamara Wijsman

7
除了@TomWijsman,您显然可以通过添加for 来逐个服务设置延迟DWORDHKLM\SYSTEM\CurrentControlSet\services\<service name>\AutoStartDelay
Stajs

8

据我了解,启动该服务只是一个延迟。

Windows的更高版本引入了此功能,以确保它们在引导过程中不会彼此绊倒(同时启动大量的过程不利于性能)。

该功能的文档指出,标记为“服务”的服务将在“启动后不久”启动,希望一旦启动时所需的服务稳定下来。


0

这是一个例子。我有一个SonarQube服务,该服务取决于我的MySQL数据库服务。因此,我将MySQL服务设置为自动,以便在计算机启动时启动并运行数据库。我已将SonarQube服务设置为自动(延迟)启动,以确保在启动它依赖的数据库服务之后启动。

如果您有这样的依赖性,则使用延迟启动来确保依赖性服务以正确的顺序启动会很有帮助。


8
如果您具有这样的依赖关系,则处理该依赖关系的正确方法是将服务显式配置为依赖于另一个服务,而不是等待几分钟并希望它已启动。
马西莫

谢谢。也许您可以解释该怎么做?而且,似乎它能正常工作。也许您推荐的是“更好”,我不会不同意?
Russ Jackson


0

当您想要延迟服务的启动以允许其他服务完全启动时(例如SCCM客户端),它也会延迟启动以允许WMI服务完全启动,因为它依赖于它的完全启动而被延迟使用和运行。


我会注意到,这样的要求是服务作者的疏忽的标志。解决此类问题的正确方法是使用显式服务依赖项。
Brian

0

这主要用于以AD帐户开头的服务。如果服务在服务器建立网络连接以联系DC之前尝试启动,则它将失败,有时系统会卡住并且无法访问。

延迟确保服务一旦网络连接建立就可以启动,以便为其使用AD帐户。

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.