我有一个Windows服务,它一遍又一遍地调用存储过程(在无限循环中)。
代码如下所示:
while(1)
{
callStoredProc();
doSomethingWithResults();
}
但是,可能会出现循环卡住而没有响应的情况,但服务仍在技术上运行。
我想有一些工具可以监控服务的运行状况,让运营团队知道重启服务。
但对于我的方案,这无济于事,因为该服务仍将在技术上运行,但它已经卡住而无法继续。
如果发生这种情况,确保此过程重新启动的最佳方法是什么?
解决方案是使用检查此进程心跳的任务调度程序,如果在一段时间内没有心跳,则重新启动服务吗?有另一个单独的线程监视第一个进程的进度吗?
答案 0 :(得分:2)
Windows服务有各种recovery options来处理问题1.对于问题2,最好的办法是使用超时方法,如果服务花费的时间超过X,则重新启动或停止它正在做什么(我不知道你的服务的性质,所以不能提供实现细节。)
然而,心跳的想法也会起作用,只是成为管理/维护的另一个事物。安装。