【发布时间】:2013-05-27 04:16:53
【问题描述】:
我有一个关于如何最好地检查服务是否仍在运行的问题。
首先澄清一下。我拥有的服务是一个 C# 应用程序,它既可以从命令行运行,也可以作为 Windows 服务运行。该服务的功能是检查远程第 3 方数据源的更改,并在将这些更改添加到我们自己的本地数据存储之前处理这些更改。
我希望能够确定服务何时因任何原因停止运行,并在这种情况发生时尽可能自动地通知某人。无论服务是作为 Windows 服务运行还是从命令行运行,这都需要发生。
我已经考虑过监控本地数据存储的更改,并在一段时间内未发生更改时发出通知,但事实证明这有点过于不一致,因为更改第 3 方数据的频率source 是可变的,这意味着长时间没有更改并不一定表明服务已停止工作,可能只是没有更改!
对于我如何进行监控有什么建议吗?有没有人有过类似的工作经验?
谢谢,M
编辑 1 只是大致了解服务的工作原理:当新的/更新的数据可用时,第 3 方服务会引发事件,因此我的服务会等待这些事件被引发并处理引发事件中返回的数据。因此,这就是为什么很难确定何时“没有变化”而不是“服务崩溃”。
编辑 2 我想我需要更清楚一点:此监控的主要原因是通知用户有关服务或与第 3 方服务连接的潜在问题。该服务本身是单线程的,并具有适当的异常处理和日志记录。该服务很可能会在某处的服务器上运行,因此如果该服务出现任何问题,并且无论出于何种原因该服务需要通知某人,它都会停止更新我们的本地数据存储。
【问题讨论】:
-
您的服务是否有某种轮询循环?
-
您能否向我们展示您的服务实际功能的伪大纲?我们可以帮助确定放置某种形式的心跳的位置。
标签: c# service monitoring