Windows-Dienste je nach Auslastung herunterfahren

Windows-Dienste je nach Auslastung herunterfahren

Ich habe mich gefragt, ob es kostenlose/Open-Source-Lösungen gibt, die einen Windows-Dienst je nach Auslastung starten und stoppen. Ich habe einige PubSub-Abonnentendienste, die im Hintergrund arbeiten, was nicht kritisch ist. Idealerweise würde ich gerne Dinge automatisieren können, sodass diese Dienste gestartet werden können, wenn Speicher/CPU/Festplatten-E/A unter einem bestimmten Schwellenwert liegen, und ordnungsgemäß gestoppt werden, wenn dieser Schwellenwert erreicht wird. Kennen Sie irgendwelche Lösungen? Danke, JP

Antwort1

In Windows ist eine Software integriert, die dies erledigt: die sogenannteWindows-Systemressourcen-Manager(WSRM) Es wird tun, was Sie wollen, d. h. Dienste werden auf der Grundlage der Ressourcen priorisiert.

Offensichtlich nicht Open Source, wird aber mit dem Betriebssystem geliefert.

Antwort2

Mir ist kein externes Tool bekannt, aber Sie könnten relevante Leistungsindikatoren innerhalb Ihres Dienstes überwachen und keine Arbeit ausführen (für einen bestimmten Zeitraum in den Ruhezustand wechseln), wenn die von Ihnen als relevant erachteten Leistungsindikatoren die Schwellenwerte überschreiten. Dies wäre nicht ganz dasselbe wie das Stoppen des Dienstes (er wäre noch immer im Speicher vorhanden), sollte aber das gewünschte Ergebnis erzielen.

Ein Vorteil dieses Ansatzes besteht darin, dass Sie sich nicht um die Einrichtung und Konfiguration eines externen Tools oder die Überwachung, ob das externe Tool noch funktioniert, kümmern müssen.

Antwort3

Sie können einen Alarm einrichten, der bei einem festen Schwellenwert (z. B. CPU>=75) ausgeführt wird. Um einen Alarm unter Windows einzurichten, finden Sie hier einen Link http://support.microsoft.com/kb/324752

Sie können also einen Alarm für den Zustand „CPU-Auslastung >= 75 %“ einrichten und als Befehlszeile verwenden

      net stop svcName 

Dadurch wird der Dienst mit der Bezeichnung „svcName“ gestoppt.

Sie könnten einen weiteren Alarm für die entgegengesetzte CPU-Auslastung < 70 % definieren und als Befehlszeile verwenden

      net start svcName 

wenn die Grenzwerte unterschritten werden.

Ich habe einen Abstand von 5 % zwischen „Ein“ und „Aus“ eingehalten. Sie könnten jedoch eine Batchdatei erstellen, um das zu häufige Starten und Stoppen des Dienstes zu verzögern.

Hoffe das hilft

verwandte Informationen