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