WaitToKillServiceTimeout unter Windows konfigurieren

Aus MILLENNIUM ARTS ISP - Hilfe | FAQ
Zur Navigation springen Zur Suche springen

WaitToKillServiceTimeout bestimmt, wie lange der Windows-Dienststeuerungs-Manager beim Herunterfahren auf das ordnungsgemäße Beenden von Systemdiensten wartet. Nach Ablauf der Wartezeit setzt Windows den Herunterfahrvorgang fort, auch wenn einzelne Dienste ihre Bereinigungsarbeiten noch nicht vollständig abgeschlossen haben.

Eine Verkürzung kann das Herunterfahren beschleunigen. Zu niedrige Werte können jedoch dazu führen, dass Dienste nicht genügend Zeit zum Speichern, Synchronisieren oder Schließen ihrer Daten erhalten.

Kurzbewertung

  • Datentyp: Zeichenfolge, nicht DWORD
  • Einheit: Millisekunden
  • 20000: ungefähr 20 Sekunden
  • 10000: moderat verkürzte Wartezeit
  • 5000: aggressive Verkürzung
  • 2000: für normale Systeme nicht zu empfehlen
  • Leistungssteigerung: keine
  • Wirkung: ausschließlich auf das Herunterfahren von Diensten

Korrektur älterer Registry-Tipps

In älteren Tuning-Sammlungen wird häufig folgende Einstellung genannt:

DWORD-Wert (32-Bit)
WaitToKillServiceTimeout = 7D0 hexadezimal

Diese Angabe ist technisch falsch.

WaitToKillServiceTimeout muss als Zeichenfolge angelegt werden:

Typ: REG_SZ

Der Inhalt wird als normale Dezimalzahl in Millisekunden eingetragen:

2000

Eine hexadezimale Eingabebasis existiert bei einer Zeichenfolge nicht.

Registrierungspfad

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

Die Einstellung gilt systemweit und betrifft alle Windows-Dienste. Administratorrechte sind erforderlich.

Registry-Wert

Name:

WaitToKillServiceTimeout

Typ:

Zeichenfolge (REG_SZ)

Einheit:

Millisekunden

Ein Wert von

20000

entspricht beispielsweise:

20 Sekunden

Funktionsweise

Beim Herunterfahren sendet der Windows-Dienststeuerungs-Manager den laufenden Diensten eine Aufforderung zum Beenden. Die Dienste können diese Zeit unter anderem verwenden, um:

  • noch nicht gespeicherte Daten zu schreiben
  • Datenbanken ordnungsgemäß zu schließen
  • Cache-Inhalte auf den Datenträger zu übertragen
  • Netzwerkverbindungen zu beenden
  • Replikationsvorgänge abzuschließen
  • Hardwarezustände zu sichern
  • Protokolle zu schreiben

Wird der durch WaitToKillServiceTimeout festgelegte Zeitraum überschritten, wartet Windows nicht unbegrenzt weiter und setzt den Herunterfahrvorgang fort.

Abgrenzung zu Anwendungen

WaitToKillServiceTimeout betrifft ausschließlich Windows-Dienste.

Die Einstellung steuert nicht unmittelbar das Beenden normaler Desktopprogramme.

Für Benutzeranwendungen existieren andere Einstellungen, beispielsweise:

WaitToKillAppTimeout
HungAppTimeout
AutoEndTasks

Diese Werte sollten getrennt dokumentiert und nicht mit WaitToKillServiceTimeout vermischt werden.

Bedeutung möglicher Werte

20000 Millisekunden

WaitToKillServiceTimeout = 20000

Dies entspricht ungefähr 20 Sekunden.

Microsoft beschreibt für normale Dienst-Bereinigungsarbeiten eine standardmäßige Größenordnung von etwa 20 Sekunden. Der tatsächlich vorhandene Wert des jeweiligen Systems sollte jedoch immer geprüft werden. Diese Einstellung bietet Diensten ausreichend Zeit für ein kontrolliertes Beenden und ist für normale Arbeitsplatzsysteme eine sichere Ausgangsbasis.

10000 Millisekunden

WaitToKillServiceTimeout = 10000

Dies entspricht zehn Sekunden.

Der Wert verkürzt die maximale Wartezeit deutlich, lässt Diensten jedoch weiterhin einen gewissen Zeitraum zum geordneten Abschluss. Für schnelle Arbeitsplatzsysteme ohne komplexe Server-, Datenbank- oder Replikationsdienste kann dies ein vorsichtiger Testwert sein.

5000 Millisekunden

WaitToKillServiceTimeout = 5000

Dies entspricht fünf Sekunden.

Der Wert ist bereits aggressiv. Dienste mit umfangreichen Schreib-, Synchronisations- oder Bereinigungsarbeiten können möglicherweise nicht mehr kontrolliert beendet werden. Eine Verwendung sollte nur nach Prüfung der Ereignisanzeige und wiederholten Tests erfolgen.

2000 Millisekunden

WaitToKillServiceTimeout = 2000

Dies entspricht zwei Sekunden.

Der Wert wurde häufig als Tuning-Einstellung zum schnelleren Herunterfahren verbreitet. Für moderne Arbeitsplatz- und Produktionssysteme ist er jedoch nicht pauschal zu empfehlen. Zwei Sekunden können unter anderem zu kurz sein für:

  • Datenbankdienste
  • Backup-Software
  • Synchronisationsdienste
  • Netzwerk- und VPN-Dienste
  • Audio- und Hardwaredienste
  • virtuelle Maschinen
  • Dateiindizierung
  • Cloud-Synchronisation
  • Sicherheitssoftware
  • Server- und Replikationsdienste

Die Verkürzung kann das Herunterfahren zwar beschleunigen, erhöht jedoch das Risiko eines unsauberen Dienstabbruchs.

Sehr hohe Werte

Ein höherer Wert kann erforderlich sein, wenn ein bestimmter Dienst nachweislich mehr Zeit für einen sauberen Abschluss benötigt. Microsoft dokumentiert beispielsweise verlängerte Wartezeiten für bestimmte DFS-Replikationsdienste. Da WaitToKillServiceTimeout für alle Dienste gilt, sollte der Wert nur so hoch wie tatsächlich erforderlich gewählt werden.

Extrem hohe Werte können das Herunterfahren erheblich verzögern, wenn ein Dienst nicht mehr reagiert.

Empfohlene Vorgehensweise

Für normale Arbeitsplatzsysteme sollte zunächst der vorhandene Wert beibehalten werden. Falls das Herunterfahren reproduzierbar durch langsam beendete Dienste verzögert wird:

  1. Ereignisanzeige auf Dienstfehler und Zeitüberschreitungen prüfen.
  1. Den verursachenden Dienst identifizieren.
  1. Software und Treiber des Dienstes aktualisieren.
  1. Prüfen, ob der Dienst tatsächlich benötigt wird.
  1. Erst danach die Wartezeit vorsichtig reduzieren.
  1. Zunächst mit 10000 Millisekunden testen.
  1. Nur bei fehlerfreiem Verhalten weiter reduzieren.
  1. Werte unter 5000 Millisekunden vermeiden.

Die Ursache eines langsamen Herunterfahrens sollte möglichst behoben werden, statt den Dienst lediglich früher abzubrechen.

WaitToKillServiceTimeout auf zehn Sekunden setzen

Registrierungseditor

  1. Den Registrierungseditor als Administrator öffnen.
  1. Zum folgenden Schlüssel wechseln:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
  1. Den Wert WaitToKillServiceTimeout öffnen.
  1. Falls er fehlt, eine neue Zeichenfolge anlegen.
  1. Folgenden Wert eintragen:
10000
  1. Windows neu starten.

Registrierungsdatei

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]
"WaitToKillServiceTimeout"="10000"

Windows-Terminal

Das Windows-Terminal muss als Administrator geöffnet werden:

reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v WaitToKillServiceTimeout /t REG_SZ /d 10000 /f

Anschließend muss Windows neu gestartet werden.

WaitToKillServiceTimeout auf fünf Sekunden setzen

reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v WaitToKillServiceTimeout /t REG_SZ /d 5000 /f

Dieser Wert sollte nur verwendet werden, wenn zehn Sekunden ohne Probleme getestet wurden.

Mögliche Vorteile

Eine moderate Verkürzung kann folgende Auswirkungen haben:

  • schnelleres Herunterfahren bei langsam reagierenden Diensten
  • kürzere Wartezeit bei Diensten, die ohnehin nicht ordnungsgemäß reagieren
  • schnellerer Neustart nach Wartungsarbeiten
  • geringere Verzögerung bei automatisierten Arbeitsplatzsystemen

Die Änderung beschleunigt weder den Windows-Start noch die normale Systemleistung.

Mögliche Nachteile

Zu niedrige Werte können folgende Probleme verursachen:

  • unvollständig geschlossene Datenbanken
  • beschädigte Arbeitsdateien
  • nicht abgeschlossene Synchronisation
  • verlorene Cache-Inhalte
  • fehlerhafte Dienstzustände beim nächsten Start
  • Wiederherstellungs- oder Reparaturvorgänge
  • Ereignisprotokollfehler
  • unsauber beendete Netzwerkdienste
  • beschädigte Replikationsdaten
  • unerwartete Probleme mit Backup- oder Sicherheitssoftware

Ein schneller schwarzer Bildschirm bedeutet nicht automatisch, dass alle Dienste ihre Arbeit korrekt abgeschlossen haben.

Wann kann eine Verkürzung sinnvoll sein?

Eine moderate Verkürzung kann sinnvoll sein, wenn:

  • das System nur wenige zusätzliche Dienste verwendet
  • keine Datenbank- oder Serverdienste laufen
  • keine virtuellen Maschinen aktiv sind
  • keine umfangreichen Synchronisationsdienste verwendet werden
  • das Herunterfahren objektiv durch einen Dienst verzögert wird
  • die Ereignisanzeige keine Fehler nach dem Neustart meldet
  • alle wichtigen Anwendungen vor dem Herunterfahren bereits beendet werden

Wann sollte der Wert nicht verkürzt werden?

Eine Verkürzung ist nicht zu empfehlen bei:

  • Serverbetrieb
  • Domaincontrollern
  • Datenbankservern
  • Datei- und Backupservern
  • virtuellen Maschinen
  • laufender Cloud-Synchronisation
  • professionellen Produktionssystemen mit Hardwarediensten
  • aktiven Netzwerk- oder VPN-Verbindungen
  • Replikationsdiensten
  • ungeklärten Dienstfehlern
  • Strom- oder Datenträgerproblemen

Auch bei häufigen Meldungen über nicht beendete Dienste sollte zunächst die Ursache ermittelt werden.

Ereignisanzeige prüfen

Probleme beim Herunterfahren können in der Ereignisanzeige nachvollzogen werden:

eventvwr.msc

Relevante Bereiche sind insbesondere:

Windows-Protokolle → System
Windows-Protokolle → Anwendung
Anwendungs- und Dienstprotokolle

Gesucht werden sollte nach Warnungen und Fehlern, die unmittelbar vor dem Herunterfahren oder nach dem nächsten Systemstart protokolliert wurden.

Vorhandenen Wert sichern

Vor der Änderung sollte der vollständige Schlüssel exportiert werden:

reg export "HKLM\SYSTEM\CurrentControlSet\Control" "%USERPROFILE%\Desktop\Windows-Control.reg" /y

Alternativ kann nur der vorhandene Wert mit folgendem Befehl angezeigt werden:

reg query "HKLM\SYSTEM\CurrentControlSet\Control" /v WaitToKillServiceTimeout

Der ausgegebene Wert sollte vor jeder Änderung notiert werden.

Rückgängig machen

Der zuvor vorhandene Wert wird wieder eingetragen.

Beispiel für 20 Sekunden:

reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v WaitToKillServiceTimeout /t REG_SZ /d 20000 /f

War der Wert ursprünglich nicht vorhanden, kann der selbst angelegte Eintrag gelöscht werden:

reg delete "HKLM\SYSTEM\CurrentControlSet\Control" /v WaitToKillServiceTimeout /f

Anschließend muss Windows neu gestartet werden.

Fazit

WaitToKillServiceTimeout legt die maximale Wartezeit beim Beenden von Windows-Diensten fest. Der Wert muss als Zeichenfolge und in Millisekunden eingetragen werden. Die häufig verbreitete Angabe als DWORD-Wert ist falsch. Eine moderate Einstellung von 10000 Millisekunden kann auf einfachen Arbeitsplatzsystemen getestet werden. Der alte Tuning-Wert von 2000 Millisekunden ist sehr aggressiv und kann Dienste beenden, bevor sie ihre Daten ordnungsgemäß gespeichert haben.

Für Produktions-, Server-, Datenbank-, Backup- oder Synchronisationssysteme sollte die vorhandene Wartezeit grundsätzlich beibehalten oder bei Bedarf sogar verlängert werden.