[英]How to ensure Windows service process is always running?
我有一个Windows服务,它反复(在无限循环中)调用存储的proc。
代码如下:
while(1)
{
callStoredProc();
doSomethingWithResults();
}
但是,在某些情况下可能会出现循环卡住而无响应,但服务在技术上仍在运行的情况。
我想象有一些工具可以监视服务的运行状况,让运营团队知道重新启动它。
但是对于我的情况,这将无济于事,因为该服务在技术上仍将运行,但是它被卡住并且无法继续。
如果发生这种情况,确保此过程重新启动的最佳方法是什么?
解决方案是使用任务调度程序检查此过程的心跳,并在一段时间内无心跳时重新启动服务吗? 是否有另一个单独的线程来监视第一个过程的进度?
Windows服务具有解决问题1的各种恢复选项 。对于问题2,最好的选择是使用超时方法,如果该服务花费的时间超过X的时间来完成,它将重新启动或停止其工作(我不会(您不了解服务的性质,因此无法提供实施细节)。
心跳的想法也将起作用,但是,这成为管理/维护和安装的另一件事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.