負荷に基づいて Windows サービスを開始および停止する無料またはオープン ソースのソリューションがあるかどうか知りたいのですが。バックグラウンドで作業する pubsub サブスクライバー サービスがいくつかありますが、これは重要ではありません。理想的には、メモリ/CPU/ディスク I/O が特定のしきい値を下回った場合にこれらのサービスを開始し、そのしきい値に達した場合に正常に停止するように自動化できればと思います。何か解決策をご存知ですか? ありがとうございます JP
答え1
Windowsにはこれを実行するソフトウェアが組み込まれています。Windows システム リソース マネージャー(WSRM) は、リソースに基づいてサービスの優先順位を設定するなど、必要な処理を実行します。
明らかにオープンソースではありませんが、OS に付属しています。
答え2
外部ツールについては知りませんが、サービス内の関連するパフォーマンス カウンターを監視し、関連すると思われるパフォーマンス カウンターがしきい値を超えた場合は何も行わない (一定期間スリープする) ことができます。これは、サービスを停止するのとまったく同じではありませんが (サービスはメモリ内に常駐したままになります)、目的の結果を達成できるはずです。
このアプローチの利点の 1 つは、外部ツールのセットアップと構成、または外部ツールがまだ動作していることの監視について心配する必要がないことです。
答え3
固定しきい値(CPU> = 75など)で実行できるアラートを設定できます。Windowsでアラートを設定するには、次のリンクを参照してください。 http://support.microsoft.com/kb/324752
つまり、CPU使用率>=75%の条件でアラートを設定し、コマンドラインとして次のように使用できます。
net stop svcName
これにより、svcName というサービスが停止します。
反対にCPU使用率<70%に別のアラートを定義して、コマンドラインとして次のように使用できます。
net start svcName
しきい値を下回った場合。
オンとオフの間に 5% のマージンを維持しましたが、サービスの開始と停止を頻繁に遅らせるバッチ ファイルを作成することもできます。
お役に立てれば