【发布时间】:2014-09-08 16:51:21
【问题描述】:
我们有一个可以在其他环境中运行良好的石英应用程序。
但是当我们将它部署在有两个需求的集群环境中时,它就停止了工作。我只能看到下面显示的大量日志。
任何想法可能导致它?我确信这不是我们的代码,因为它从未经过任何 TaskHandlers。
[7/17/14 13:14:54:236 EDT] 00000025 JobStoreTX I org.quartz.impl.jdbcjobstore.JobStoreSupport recoverMisfiredJobs 处理 3 个错过预定触发时间的触发器。
更新:
我怀疑这可能是由于事务隔离级别配置。目前,石英数据源配置为 TRANSACTION_READ_COMMITTED (CS)。对适当的值有什么建议吗?
TRIGGERS 表也显示它从未触发过。
NEXT_FIRE_TIME PREV_FIRE_TIME PRIORITY TRIGGER_STATE TRIGGER_TYPE START_TIME END_TIME CALENDAR_NAME MISFIRE_INSTR 1405630189133 -1 5 等待 CRON 1405624813000 0 0 1405630189139 -1 5 等待 CRON 1405624813000 0 0 1405630215140 -1 5 等待 CRON 1405624813000 0 0 1405630189126 -1 5 等待 CRON 1405624813000 0 0
【问题讨论】:
-
你是怎么解决这个问题的?
-
问题不在于石英。有一些逻辑问题导致线程被阻塞。
-
你能解释一下吗?
-
如果您有 10 个石英线程供触发器使用,并且触发器设置为每秒触发一次。当触发代码执行时间过长时,即 1 分钟,然后在 10 次触发后,线程耗尽,从而阻塞后续触发。因此,导致未命中火灾。这只是我做了一些测试后的观察。
标签: quartz-scheduler