0

我有许多 24/7 运行的后端进程(java 应用程序)。为了监控这些后端(即检查进程是否没有响应并通过 SMS/EMAIL 通知),我编写了另一个应用程序。

旧的后端现在以固定的时间间隔记录心跳,这个新的应用程序检查他们是否定期这样做,并在必要时通知。

现在,我们有两个选择

  • 要么将其作为计划任务运行,该任务将在每(比如说)15 分钟后运行并在完成其工作后停止,要么
  • 将其作为另一个后端进程运行,睡眠时间为 15 分钟。

我们现在可以预见的问题是,如果这个监控应用程序进入无响应状态怎么办?所以,我的问题是这两种情况有什么区别还是两者都一样?哪种选择更适合我的情况?

请注意,这是一个特定情况,与thisthis不同

环境: Java,托管在 LINUX 服务器上

4

3 回答 3

1

计划任务是指由系统调度程序触发,还是作为现有后端进程中的计划线程?

要捕获意外终止或无响应状态,您最好运行一个单独的进程而不是线程。但是,调度线程将使您与拥有进程的交互更紧密,并且 IPC 开销更少。

我会同时实施。在每个后端进程中维护本地状态的记录,每个进程中的计划任务触发一个线程来更新该节点的当前状态。此更新可能相当频繁,因为它比与单独的进程通信更便宜。

使用您单独的“监控应用程序”进程定期收集有关所有后端进程的信息。这应该不那么频繁地发生 - 进程是否一直在运行,或者由 cron 作业调度是无关紧要的,因为状态保存在每个后端进程中。如果其中一个后端变得无响应,此监控应用程序将能够确定没有响应并执行一些有意义的探测以确定问题所在。然后,该组件将通知您的 SMS/Email 实用程序发送报告。

于 2012-04-16T10:32:00.843 回答
0

我会选择一个后端进程,因为它可以保持状态查看来自 terracotta http://terracotta.org/products/quartz-scheduler的石英调度程序

它将对瞬态条件具有弹性,您只需要提供一个简单的包装,因此如果您在quartz.properties 文件中获得正确的线程内容,则监视器应用程序应该是健壮的。

于 2012-04-16T09:52:40.263 回答
0

您可以使用 nagios 核心作为核心并使用 Naptor 来监控您的应用程序。它易于设置并嵌入到您的应用程序开发中。

您可以在此链接查看: https ://github.com/agunghakase/Naptor/tree/ver1.0.0

于 2017-08-24T06:59:34.557 回答