根据负载关闭 Windows 服务

根据负载关闭 Windows 服务

我想知道是否有任何免费/开源解决方案可以根据负载启动和停止 Windows 服务?我有一些 pubsub 订阅者服务,它们执行的后台工作并不重要。理想情况下,我希望能够自动化操作,以便这些服务可以在内存/cpu/磁盘 i/o 低于某个阈值时启动,并在达到该阈值时正常停止。你知道有什么解决方案吗?谢谢 JP

答案1

Windows 中有一个内置软件可以执行此操作,称为Windows 系统资源管理器(WSRM)它将按照您的要求执行,即根据资源优先提供服务。

显然不是开源的,但是随操作系统附带。

答案2

我不知道有没有外部工具,但您可以监控服务内部的相关性能计数器,如果您认为相关的性能计数器超过阈值,则不执行任何工作(休眠一段时间)。这与停止服务不太一样(它仍驻留在内存中),但应该可以达到预期的目的。

这种方法的一个好处是您不必担心设置和配置外部工具,或者监控外部工具是否仍在运行。

答案3

您可以设置一个可以在固定阈值上运行的警报(例如 CPU> = 75)要在 Windows 上设置警报,这里有一个链接 http://support.microsoft.com/kb/324752

因此,您可以为条件 CPU 使用率 >=75% 设置警报,并且可以使用命令行

      net stop svcName 

这将停止名为 svcName 的服务。

您可以将另一个警报定义为相反的 CPU 使用率 < 70%,并且可以使用命令行

      net start svcName 

当它低于阈值时。

我在开启和关闭之间保留了 5% 的余量,但您可以创建一个批处理文件来延迟过于频繁地启动和停止服务。

希望这可以帮助

相关内容