Cluster computing quartz如何检测节点失败

Cluster computing quartz如何检测节点失败,cluster-computing,quartz-scheduler,Cluster Computing,Quartz Scheduler,我的生产环境使用quartz 2.1.4运行java调度程序作业。在weblogic群集服务器上,有4台机器且只有一个调度作业在一个群集节点(节点1)上正常执行数月,但节点2突然发现节点1在昨晚接管执行作业时失败。事实上,节点1没有错误(根据服务器、网络、数据库、应用程序日志),此事件导致由于2进程并发执行而创建的重复消息 quartz检测节点故障的机制是什么?通过ping扫描,或通过UCP广播进行心跳ping,或数据库响应时间其他?有什么配置吗 我已经阅读了石英配置指南 ,但没有答案 我正在使

我的生产环境使用quartz 2.1.4运行java调度程序作业。在weblogic群集服务器上,有4台机器且只有一个调度作业在一个群集节点(节点1)上正常执行数月,但节点2突然发现节点1在昨晚接管执行作业时失败。事实上,节点1没有错误(根据服务器、网络、数据库、应用程序日志),此事件导致由于2进程并发执行而创建的重复消息

quartz检测节点故障的机制是什么?通过ping扫描,或通过UCP广播进行心跳ping,或数据库响应时间其他?有什么配置吗

我已经阅读了石英配置指南 ,但没有答案

我正在使用JDBCJobstore。在详细信息检查之后,我们发现有一个数据库(Oracle)语句执行异常长(从5秒到30秒)。事件发生在这段时间。你认为这有关系吗

我的配置是

` org.quartz.threadPool.threadCount=10

org.quartz.threadPool.threadPriority=5

org.quartz.jobStore.misfirestreshold=10000

org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX `


有人知道这个信息吗?谢谢。

我知道答案已经很晚了,但也许像我们这样的人仍然需要它

短版本:全部由DB处理。重要属性是org.quartz.jobStore.clusterCheckinInterval

长版本(所有学分归:

检测失败的计划程序节点

当调度器实例执行签入例程时,它看起来 查看是否有其他计划程序实例在运行时未签入 他们本应该这样做的。它通过检查调度程序的状态来实现这一点 表中的值,并查找在 上次检查时间列早于属性 org.quartz.jobStore.clusterCheckinInterval(将在下一节中讨论 第节)。如果一个或多个节点尚未签入,则运行 计划程序假定其他实例已失败

此外,下一段可能也很重要:

在时钟不同步的单独机器上运行节点

正如您现在可以确定的,如果您在不同的机器上运行节点 时钟不同步,可能会得到意外的结果。这是 因为时间戳用于通知 上次一个节点签入时。如果该节点的时钟设置为 将来,正在运行的调度程序可能永远不会意识到节点已丢失 放下。另一方面,如果一个节点上的时钟设置在过去,则 节点可能会假定节点已关闭并尝试接管 并重新运行其工作。在这两种情况下,都不是你的行为 希望当您在群集中使用不同的计算机时(这是 正常情况下),确保时钟同步。见本节 “Quartz Clustering Cookbook”,本章后面将详细介绍如何 这样做