我有一个服务守护程序(在Windows Server中运行),它全天候运行(或应该),我没有编写或无法访问源代码。
由于某些未知原因,服务有时会停止响应(我的猜测是它死锁)。这是一个邮件服务,所以当我在'n'时间内没有收到任何邮件时,我知道它已停止工作(n从未修复)。
目前唯一可以检查它是否无响应的程序化方法是试图停止服务,如果超时,我知道它已死/僵尸。然后,我可以强制终止服务进程,然后再次运行该服务。
我想自动化这个过程(即代码“看门狗”),并且想要定期检查服务是否已经停止响应而不试图先停止响应(我不想停止服务,如果它确实工作)。
是否有任何程序化的方法来检查某个进程是否没有响应,而不是试图阻止它?
我不知道该服务是如何在内部工作的,所以我不能只是向它发送信号并等待响应(因为我不知道它会响应什么信号,除了试图干净地停止它)。
一段时间以来,这一直在我的脑海中开启和关闭,我一直无法找到答案。
如果没有其他的东西,我只会让它每晚都停止(即使它正常工作也是可以接受的),但如果有任何办法,我宁愿让守护进程每10分钟检查一次左右(如果工作正常,则每10分钟停止并重新启动一次服务是不可接受的。)
如果有的话,我会欣赏任何关于在哪里看的提示。
PS:服务停止,进程终止或服务启动的代码不是问题,我不是在寻找...我只想提示如何检查它是否已成为非在不知道如何编程的情况下做出响应。