Что делает «отложенный запуск» в типе запуска для службы Windows?


79

В чем разница между автоматическим и автоматическим (отложенный запуск) для параметра свойства для службы Windows? то есть что я получаю или теряю, устанавливая свой сервис как один или другой?

Запуск службы на Windows Server 2008 x64



Связанные с переполнением стека, подробные ответы: «Автоматически» против «Автоматически (отложенный запуск)»
Bacco

Ответы:


91

Служба, помеченная как Автоматическая (отложенный запуск) , запустится вскоре после запуска всех других служб, обозначенных как Автоматическая . По моему опыту, это означает, что они запускаются через 1-2 минуты после загрузки компьютера.

Этот параметр наиболее полезен для уменьшения «безумного порыва» ресурсов при загрузке машины.

Обратите внимание, что если у вас одновременно запущено 20 служб, каждая из них будет запускаться медленнее, поскольку она конкурирует с другими за доли ценных ресурсов машины (ЦП / ОЗУ / Диск / Сеть). То есть каждая услуга занимает больше времени, чтобы стать доступной!

Если у вас есть несколько критически важных служб, вы можете установить для этих немногих значение « Автоматически», а для остальных - « Автоматически» (отложенный запуск) . Это гарантирует, что критические службы получают большинство ресурсов раньше и становятся доступными раньше, в то время как некритические службы запускаются немного позже (что по определению нормально).


39
Действительно, после обработки сервисов Non-Delayed Start он ставит в очередь рабочий поток с задержкой по умолчанию 120 секунд, которая может быть переопределена значением AutoStartDelay в HKLM\SYSTEM\CurrentControlSet\Control. Когда этот работающий поток запускается, службы отложенного запуска обрабатываются, и когда они завершаются, SCM сигнализирует событие \ BaseNamedObjects \ SC_AutoStartComplete ...
Тамара Вийсман

7
В дополнение к @TomWijsman вы можете установить задержку для каждого отдельного сервиса , добавив DWORDдля HKLM\SYSTEM\CurrentControlSet\services\<service name>\AutoStartDelay.
Stajs

8

Насколько я понимаю, это просто задержка перед запуском сервиса.

В более поздних версиях Windows это было введено, чтобы гарантировать, что они не споткнулись о ноги друг друга во время процесса загрузки (одновременный запуск десятка процессов не влияет на производительность).

В документации по этой функции говорится, что службы, отмеченные таким образом, будут запущены «вскоре после загрузки», возможно, после того, как службы, необходимые для загрузки, немного успокоятся.


0

Вот пример. У меня есть сервис SonarQube, который зависит от моей базы данных MySQL. Итак, я настроил службу MySQL на автоматическое включение и запуск базы данных при загрузке машины. Я установил для службы SonarQube автоматический (отложенный) запуск, чтобы убедиться, что он запускается ПОСЛЕ запуска службы базы данных, от которой он зависит.

Если у вас есть такая зависимость, может быть полезно использовать отложенный запуск, чтобы убедиться, что зависимые службы запускаются в правильном порядке.


8
Если у вас есть такая зависимость, правильный способ ее обработки - это явно настроить службу, чтобы она зависела от другой, вместо того, чтобы подождать пару минут и надеяться, что она запустится.
Массимо

Благодарю. Возможно, вы можете объяснить, как это сделать? И, кажется, если это работает, это правильно. Может быть, то, что вы рекомендуете «лучше», с чем я бы не согласился?
Расс Джексон

1
Смотрите здесь: serverfault.com/questions/24821/… .
Массимо

0

Это также используется, когда вы хотите отложить запуск службы, чтобы позволить другим службам полностью запуститься, например, клиент SCCM, который запускает с задержкой, чтобы служба WMI запустилась полностью, поскольку это зависит от ее полного запуска. и работает.


Отмечу, что такое требование является признаком халатности со стороны автора сервиса. Правильный способ решения такой проблемы - использовать явную служебную зависимость.
Брайан

0

В основном это используется для служб, которые начинаются с учетных записей AD. Если служба пытается запуститься до того, как у сервера будет сетевое соединение для связи с контроллером домена, произойдет сбой, и иногда система застревает и становится недоступной.

Задержка гарантирует, что служба будет запущена после подключения к сети, чтобы использовать для нее учетную запись AD.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.