java - 选择更新时 quartz 阻塞

标签 java oracle quartz-scheduler

我有一个大型应用程序,其中 4 个节点使用 quartz 来安排作业。

我经常收到来 self 们数据库团队的邮件

'SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME='TRIGGER_ACCESS' FOR UPDATE'

阻塞 15-20 分钟。有时几个小时。 我看到我的作业也卡在等待锁定中。

我们使用的是相当旧的 Quartz 1.8.3 版本。这是我正在使用的 Quartz 设置

org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT

org.quartz.jobStore.driverDelegateClass=com.xyx.abc.common.scheduler.impl.CDAJDBCDelegate
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval = 20000

# these 3 are required by customSchedulerFactory class
org.quartz.dataSource.myDS.connectionProvider.class=com.xyz.abc.common.scheduler.impl.CustomPoolingConnectionProvider
org.quartz.jobStore.dataSource=myDS
org.quartz.jobStore.nonManagedTXDataSource=myDS

我尝试为 Quartz 启用调试日志。但并没有从中得到太多。

有人遇到过类似的问题吗?如何确保“选择更新”查询执行得很快?

最佳答案

您可以忽略这些查询。

很多年前,我站在这个问题的另一边。我是数据库团队中的那个人,他发现了一个长时间运行的查询并要求 Java 开发人员修复它。我不记得细节了,但我记得有一个很好的解释说明为什么它会这样工作,而且没有任何需要修复的地方。

当我们按 GV$SQL.ELAPSED_TIME 降序排序时,查询总是出现在性能报告中。但仔细检查后,我们发现他们没有使用任何重要 资源。他们没有使用 CPU、I/O 或任何其他宝贵资源。这是 ELAPSED_TIME 列具有误导性的罕见情况之一。

我学会了忽略它们并担心其他查询。

关于java - 选择更新时 quartz 阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45041590/

相关文章:

java - 无法解析不受支持的 major.minor 版本 52.0

oracle - 从Pro * C使用PL/SQL包游标的最佳方法

oracle - Oracle SQL 中是否有 HTF.ESCAPE_SC 的内置反函数?

java - 重复间隔不能为零

java - 如何在 Netty 中处理 SSL 加密警报

java - 设置 onClickListener 时出现 NullPointerException

java - 尝试使用 Java 运行 PL/SQL 脚本

java - 如何检查哪个 Quartz Scheduler 作业没有运行

java - 如何更改集群 quartz 作业的时间表?

java - Spring XD : Is it possible to have multiple jobs in a single module