Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 后端进程与计划任务_Java_Monitoring_Scheduled Tasks_Backend - Fatal编程技术网

Java 后端进程与计划任务

Java 后端进程与计划任务,java,monitoring,scheduled-tasks,backend,Java,Monitoring,Scheduled Tasks,Backend,我有许多后端进程(java应用程序),它们全天候运行。为了监控这些后端(即检查流程是否没有响应并通过SMS/电子邮件通知),我编写了另一个应用程序 旧的后端现在以固定的时间间隔记录心跳,这个新的应用程序检查它们是否定期这样做,并在必要时通知 现在,我们有两个选择 或者将其作为计划任务运行,每15分钟运行一次并在完成任务后停止;或者 将其作为另一个后端进程运行,睡眠时间为15分钟 我们现在可以预见的问题是,如果此监视器应用程序进入无响应状态,该怎么办?那么,我的问题是,这两种情况之间有什么区别

我有许多后端进程(java应用程序),它们全天候运行。为了监控这些后端(即检查流程是否没有响应并通过SMS/电子邮件通知),我编写了另一个应用程序

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

现在,我们有两个选择

  • 或者将其作为计划任务运行,每15分钟运行一次并在完成任务后停止;或者
  • 将其作为另一个后端进程运行,睡眠时间为15分钟
我们现在可以预见的问题是,如果此监视器应用程序进入无响应状态,该怎么办?那么,我的问题是,这两种情况之间有什么区别,还是两者都是相同的?哪种选择更适合我的情况

请注意,这是一种特殊情况,与或不同


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

我会选择后端进程,因为它可以维护状态 看看陶土公司的石英调度器


它能够适应瞬态条件,您只需要提供一个简单的包装,这样,只要您在quartz.properties文件中正确地获得线程,monitor应用程序就应该是健壮的。

通过调度任务,您的意思是由系统调度程序触发,还是作为现有后端进程中的调度线程触发

要捕获意外终止或无响应状态,最好运行单独的进程,而不是线程。然而,一个调度线程可以让您以更少的IPC开销与所属进程进行更紧密的交互

我将实现这两个目标。在每个后端进程中维护本地状态的记录,每个进程中的计划任务触发线程以更新该节点的当前状态。此更新可能相当频繁,因为它比与单独进程通信的成本更低


使用单独的“监控应用程序”流程定期收集有关所有后端流程的信息。这种情况应该不太频繁-无论进程是一直在运行,还是由cron作业调度,都无关紧要,因为状态保存在每个后端进程中。如果其中一个后端没有响应,此监控应用程序将能够确定缺少响应,并执行一些有意义的探测以确定问题所在。然后,该组件将通知您的SMS/电子邮件实用程序发送报告。

您可以使用nagios core作为核心,使用Naptor监控您的应用程序。它很容易安装并嵌入到应用程序开发中

您可以通过此链接查看:

很抱歉,我不明白这在我的情况下如何适用。这些后端是托管在第三方服务器上的应用程序的一部分。您已经编写了应用程序,让quartz管理监控类的计划调用。使用cron调用东西可以给您带来灵活性问题-当计划维护开始时会有大量邮件我们有一个独立的(SMS/电子邮件)通知已经到位。我们只需要一个能告诉通知者何时通知的流程。我们想让它变得简单,成本更低。无论如何,非常感谢您的建议:)在这两种情况下,监视过程将作为单独的过程运行。在第一种情况下,它将在每x分钟后由系统调度器触发。在第二种情况下,它将是一个单独的进程,24/7运行,睡眠时间为x分钟。好的,正如我在回答中所解释的,监控进程的执行方法是学术性的,只要它不保持任何状态。就我个人而言,我可能会让它成为由cron作业触发的短期任务,只是为了确保我少担心一个长时间运行的可执行文件(监控应用程序也可能崩溃)。然而,完全缺乏报告应该足以警告那里出了问题。