集群环境下,谁偷走quartz配置的定时任务

错误现象:

在本地开发环境中,应用服务启动后TRIGGER_STATE直接就变为ERROR

 

 前段时间在项目中,使用quartz配置一个定时任务,定时任务都持久化到oracle数据库中,但是应用服务器启动后,数据库qrtz_triggers(trigger信息表)中,对应的任务数据的TRIGGER_STATE字段就直接变为ERROR,导致定时任务不执行。

 

没有错误log日志,出错原因难定位。

对以下可能出错的原因进行了调查:

1.quartz文件配置错误

  ① 检查配置文件,调查结果是,配置文件没有发现错误。

  ② 项目中已经配置有一条定时任务A,但是任务A能正常执行。

  ③ 将任务A的quartz配置注释,只留下新增配置的定时任务,启动后还是一样报错。

项目中,其他子系统也使用了quartz配置定时任务,可以排除不是quartz配置文件错误。

 

2.定时任务实现类出错

  ① 定时任务实现类中,将业务逻辑全部注释,只输出system.out.println,但启动后,也报错。(经过很多次的调试,有时应用服务器启动,也能正常的执行一次新增的定时任务,但后面TRIGGER_STATE就又变为ERROR)

  ② 将新增的定时任务配置的时间,由2分钟改为10秒后,定时任务能正常运行。

 

3.发现数据库qrtz_scheduler_state(调度器状态表)中,有很多条数据。表示有很多实例应用都在运行quartz。

 

经过这些测试和调查,发现是其它机器可能将新增的定时任务取走执行,但是其它机器上又没有配置该新增定时任务,然后再调度该任务的时候就将数据库qrtz_triggers(Trigger信息表)中,对应的任务数据的TRIGGER_STATE字段变为ERROR。

 

综上所述,本地开发环境下,项目组成员使用同一数据库进行开发时,每位开发人员在quartz中,配置的定时任务数量不一致。当应用服务启动后,quartz任务调度器会根据数据库qrtz_triggers(trigger信息表)中的数据执行Job,数据库中已经存在新增的定时任务,而取走的应用服务quartz配置中并没有配置该新增定时任务,执行时就将TRIGGER_STATE变为ERROR,导致新增Job不能正常执行。

 

建议:

使用quartz配置定时任务,多台服务器使用同一数据库进行开发时,保证数据库qrtz_scheduler_state(任务调度表)中只有一条数据,这样就能保证定时任务是自己的应用服务取走执行的。

时间: 2024-11-02 04:41:22

集群环境下,谁偷走quartz配置的定时任务的相关文章

Jboss EAP 6.1集群环境下Ejb3.1 timer配置数据同步问题-----急急急!!!

问题描述 Hi,请问大神,我们公司有个web项目是基于JbossEAP6.1+EJB3.1+JSF2架构开发的,并部署在Jboss的集群环境下(ServerA,ServerBandServerC).项目中用EJB3.1TimerServer创建了一些scheduletasks,Timer的配置数据文件独立的存放于另一台中央文件服务器中.用户能访问一个配置task的页面,来创建新的task或更改,删除已有的tasks.但我们发现这样做在集群环境下出现问题.详情如下:当服务器被启动时,每台服务器会去

quartz集群-Quartz+Spring+Hibernate集群环境下 ClusterManager: Error managing cluster: null

问题描述 Quartz+Spring+Hibernate集群环境下 ClusterManager: Error managing cluster: null [2013-12-19 14:43:44] [ERROR] QuartzScheduler_quartzScheduler-NON_CLUSTERED_ClusterManager) - ClusterManager: Error managing cluster: null java.lang.reflect.UndeclaredThro

quartz在集群环境下的最终解决方案

Normal 0 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 在集群环境下,大家会碰到一直困扰的问题,即多个 APP 下如何用 quartz 协调处理自动化 JOB . 大家想象一下,现在有 A , B , C3 台机器同时作为集群服务器对外统一提供 SERVICE : A , B , C 3 台机器上各有一个 QUARTZ ,他们会按照即定的 SCHEDULE 自动执行各自的任务. 我们先不说实现什么功能,就说

Ubuntu 14(64位) 集群环境下如何安装Hadoop 2.4

经过前边的积累,今天终于实现了集群环境下部署Hadoop,并成功运行了官方的例子. 工作如下: 两台机器: NameNode:上网小本,3G内存,机器名:YP-X100e,IP:192.168.101.130. DataNode:虚拟机,Win7下载VMWare10中虚拟Ubuntu14,虚拟机器名:ph-v370,IP:192.168.101.110 确保可互相ping通,按照机器名和IP配置各自机器的/etc/hosts文件和/etc/hostname文件,我的hosts配置内容如下 127

weblogc 集群环境下 关于session的存储问题

问题描述 我的web应用时部署在weblogic上的,我的weblogic是工作在集群环境下的,数据库用的oracle,最近我的dba向我提了这样的问题要我解决:WehavedetectedalotofactivityonSANPRODdatabaseinstancesincethismorningDuetotheactivitythearchivelogshavebeenfillingupextremelyfast,8GBofarchivelogsweregeneratedaloneforth

Hadoop集群环境下网络架构的设计与优化

大数据时代,研究大数据的IT 厂商把研究重心放在优化大数据系统软件架构.优化业务逻辑.优化数据分析算法.优化节点性能等方向,而忽略了大数据环境基础设置中网络环节的评估和优化.本文介绍了思科公司在Hadoop 集群环境下的网络架构设计与优化经验. 大数据Hadoop环境网络特性Hadoop 集群中的各节点通过网络连接起来,而且MapReduce 中的以下过程会在网络中传输数据. (1)写数据.当向HDFS 写入初始数据或者大块数据时,会发生数据写入过程.写入的数据块需要备份到其他节点,需要在网络中

Hadoop集群环境下的网络架构的设计与优化

Hadoop集群环境下的网络架构的设计与优化 冯力 杨凯 杨帆 大数据时代,研究大数据的IT厂商把研究重心放在优化大数据系统软件架构.优化业务逻辑.优化数据分析算法.优化节点性能等方向,而忽略了大数据环境基础设置中网络环节的评估和优化.本文介绍了思科公司在Hadoop集群环境下的网络架构设计与优化经验.大数据Hadoop环境网络特性Hadoop集群中的各节点通过网络连接起来,而且MapReduce中的以下过程会在网络中传输数据. Hadoop集群环境下的网络架构的设计与优化

集群环境下. 如何保证同步

问题描述 已知单web容器环境下. 给一个代码块加上同步锁可以使多线程访问时排队. 进而到达同步效果.但是在集群环境下. 线程A访问集群A容器的同步块. 线程B访问集群B容器的同步块...它俩同时访问.这样一来, 是否就没了同步效果了.如果要时集群环境下也有一个同步的效果, 有什么思路解决呢.. 解决方案 嗯,同步在集群环境下是会出现这种问题,一般的解决 方法 只能依靠底下一层的控制(比如通过数据库表,或数据库表的锁,或者专门的一个共用文件里)http://stackoverflow.com/q

ORA-01291: missing logfile Oracle RAC 集群环境下日志文件结构

在Oracle11g RAC环境中,对集群中的日志的定期检查是必不可少的.通过查看集群日志,可以早期定位集群环境中出现的问题, 以便将问题消灭在萌芽状态. 简单介绍一下有关Oracle集群环境中日志的结构,方便快速查找所需的日志文件. 1.Oracle集群日志藏匿之处 Oracle集群涉及的日志主要位于"$ORA_CRS_HOME/log"和"$ORACLE_HOME/log"目录中. SQL> SELECT  capture_name,queue_name,