我想知道是否有任何免费/开源解决方案可以根据负载启动和停止 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% 的余量,但您可以创建一个批处理文件来延迟过于频繁地启动和停止服务。
希望这可以帮助