grails - Quartz Jobs 不会间歇性触发
问题描述
环境:
- 应用服务器:WebSphere 8.5
- 操作系统:Solaris 11
- 石英版本:2.2.1
- 无集群环境。
到目前为止的问题和发现:
- 当计划触发两个并发作业时,只有一个作业会自动触发。然而,并非所有工作都如此。有时,一份工作也不是解雇。
- 未触发作业后不报告失火作业。
[QuartzScheduler_QuartzScheduler-NON_CLUSTERED_MisfireHandler] 调试 jdbcjobstore.JobStoreTX - 发现 0 个触发器错过了预定的触发时间。
作业计划每隔几个小时运行一次,每项作业的完成时间不会超过几分钟。换句话说,没有线程忙,这在 Thread Dump 中得到了证明。
为 Quartz 配置了 30 个线程。在作业计划时间之前进行的线程转储中,所有 30 个都处于 TIMED_WAITING 状态。
QuartzScheduler_Worker-30 *priority:3 - threadId:0x0000000104ff5000 - nativeId:0x1c1 - nativeId (decimal):449 - state:TIMED_WAITING 堆栈跟踪: java.lang.Thread.State:TIMED_WAITING(在对象监视器上) 在 java.lang.Object.wait(本机方法) 在 org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568) - 锁定(一个 java.lang.Object)*
- 它工作了一段时间,它发生在 WAR 文件重新启动后。
有关模拟问题的更多详细信息: - 根据日志未触发作业。QUARTZ_TRIGGERS 表中的 PREV_FIRE_TIME 列已更新。
解决方案
数据库中有问题。表空间已满,因此quartz 无法插入记录以启动计划作业。
我想知道为什么即使我启用了 Quartz 调试模式,当出现 DB 问题时也没有抛出异常。
推荐阅读
- windows-10 - 步入 WinDbg 和 Visual Studio 会导致蓝屏
- swift - swift中有自然日志功能吗?
- r - 如何在 R 中使用函数 wald.test
- telegram - Telegram API,带 ftp URL 的 SendMessage,不带 http://
- c# - 谁能告诉我如何将物理文件保存到配置提供的路径 - ASP.NET Core MVC
- python - Pyspark - 将 rfc 2822 列转换为 tymestamp 列
- javascript - 用于数据库连接的正确 nodejs 架构是什么?
- python - 如何在机器人框架中修复“找不到定位器的元素”
- c - 使用结构内部的 int 变量初始化静态数组
- c - 使用 Plecs 的 C 语言状态机