我有一个大型应用程序,其中4个节点使用quartz调度作业。
我经常收到来自我们数据库团队的邮件,内容是:
'SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME='TRIGGER_ACCESS' FOR UPDATE'
这个操作会阻塞15-20分钟,有时甚至几个小时。我发现我的作业也被锁住了,无法执行。
我们正在使用相当老的Quartz 1.8.3版本。以下是我正在使用的Quartz设置。
我经常收到来自我们数据库团队的邮件,内容是:
'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的调试日志,但是没有得到很多信息。
有人遇到过类似的问题吗?如何确保“Select for update”查询执行快速?