Que fait le «démarrage différé» dans le type de démarrage pour un service Windows?


79

Quelle est la différence entre Automatique et Automatique (démarrage différé) pour un paramètre de propriété pour un service Windows? c'est-à-dire ce que je gagne ou perds en définissant mon service comme étant l'un ou l'autre?

Exécution du service sur Windows Server 2008 x64



En relation avec le débordement de pile, réponses détaillées: "Automatique" vs "Automatique (démarrage différé)"
Bacco

Réponses:


91

Un service marqué comme automatique (démarrage différé) démarrera peu de temps après le démarrage de tous les autres services désignés comme automatiques . D'après mon expérience, cela signifie qu'ils sont démarrés 1 à 2 minutes après le démarrage de l'ordinateur.

Ce paramètre est particulièrement utile pour réduire la "course folle" de ressources au démarrage d’une machine.

Notez que lorsque vous démarrez 20 services en même temps, chacun démarre plus lentement, car il rivalise avec les autres pour obtenir des tranches des ressources précieuses de la machine (CPU / RAM / disque / réseau). C'est-à-dire que chaque service met plus de temps à devenir disponible!

Si vous avez quelques services critiques, vous pouvez définir ces derniers sur Automatique et définir autant d’autres que possible sur Automatique (démarrage différé) . Cela garantira que les services critiques obtiennent rapidement le plus grand nombre de ressources et deviennent disponibles plus rapidement, tandis que les services non critiques démarrent un peu plus tard (ce qui est correct par définition).


39
En effet, après avoir traité les services de démarrage non différé, il mettra en file d'attente un thread de travail doté d'un délai par défaut de 120 secondes, qui peut être remplacé par la valeur AutoStartDelay dans HKLM\SYSTEM\CurrentControlSet\Control. Lorsque ce thread fonctionnel s'exécute, les services de démarrage différé sont gérés et, lorsqu'ils sont terminés, le SCM signale l'événement \ BaseNamedObjects \ SC_AutoStartComplete ...
Tamara Wijsman

7
En plus de @TomWijsman, vous pouvez apparemment définir le délai service par service en ajoutant un DWORDpour HKLM\SYSTEM\CurrentControlSet\services\<service name>\AutoStartDelay.
Stajs

8

D'après ce que j'ai compris, il s'agit simplement d'un délai avant le lancement du service.

Les versions ultérieures de Windows introduisaient cela pour s'assurer qu'ils ne trébuchaient pas au cours du processus de démarrage (avoir un nombre incroyable de processus en train de démarrer en même temps ne favorise pas les performances).

La documentation de cette fonctionnalité indique que les services marqués seront donc démarrés "peu de temps après le démarrage", espérons-le une fois que les services requis au démarrage auront été légèrement installés.


0

Voici un exemple. J'ai un service SonarQube qui dépend de mon service de base de données MySQL. J'ai donc mis le service MySQL sur automatique pour que la base de données soit opérationnelle au démarrage de la machine. Le service SonarQube est réglé sur le démarrage automatique (différé) pour m'assurer qu'il démarre APRÈS que le service de base de données dont il dépend soit démarré.

Si vous avez une dépendance de ce type, il peut être utile d’utiliser le démarrage différé pour vous assurer que les services dépendants démarrent dans le bon ordre.


8
Si vous avez une dépendance comme celle-ci, la bonne façon de la gérer est de configurer explicitement un service pour qu'il dépende de l'autre, plutôt que d'attendre quelques minutes et d'espérer qu'il ait démarré.
Massimo

Merci. Peut-être que vous pouvez expliquer comment faire cela? Et, semble que si cela fonctionne, il est correct. Peut-être que ce que vous recommandez est "meilleur", ce avec quoi je ne serais pas en désaccord?
Russ Jackson


0

Ceci est également utilisé lorsque vous souhaitez différer le démarrage d'un service pour permettre le démarrage complet d'autres services, tel que le client SCCM, qui effectue un démarrage différé pour permettre au service WMI de démarrer complètement car il dépend de sa mise en place complète. et en cours d'exécution.


Je noterai qu'une telle exigence est un signe de négligence de la part de l'auteur du service. La bonne façon de résoudre un tel problème consiste à utiliser une dépendance de service explicite.
Brian

0

Ceci est principalement utilisé pour les services qui commencent avec les comptes AD. Si le service tente de démarrer avant que le serveur ait une connexion réseau pour contacter le DC, cela échouera et parfois le système resterait bloqué et deviendrait inaccessible.

Le délai garantit que le service démarrera une fois la connexion réseau établie afin de pouvoir utiliser le compte AD à cet effet.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.