石英触发器已成为过去

Quartz triggers are in the past

我有 750 个 Quartz 作业,每个作业有 1 个触发器。

转储触发器数据显示下一次触发时间是过去的时间。 转储来自 15:55 Berlin/Europe 时区。

nextfire 时间是错误的还是 Quartz 因作业过多而过载?

Quartz 工作

Name= INSTANT_KPI_DEF_ID_1000708 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

Name= INSTANT_KPI_DEF_ID_1000829 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

Name= INSTANT_KPI_DEF_ID_1000707 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

Name= INSTANT_KPI_DEF_ID_1000828 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

Name= INSTANT_KPI_DEF_ID_1000706 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

Name= INSTANT_KPI_DEF_ID_1000827 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

Name= INSTANT_KPI_DEF_ID_1000705 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

Name= INSTANT_KPI_DEF_ID_1000826 Group=DEFAULT NextFireTime=Thu Feb 09 15:15:30 CET 2017 Priority=5 Paused=NOT PAUSED Triggers #=1

我发现 quartz 默认配置为只有 10 个 运行 作业。 我将其更改为 200,现在我碰到的下一堵墙是 oracle 不喜欢同时建立那么多连接。

SchedulerFactoryBean quartzScheduler = new SchedulerFactoryBean();
quartzScheduler.setSchedulerName("rm-quartz-scheduler");

Properties props = new Properties();

// Thread pooling
props.put("org.quartz.threadPool.class", org.quartz.simpl.SimpleThreadPool.class.getName());
props.put("org.quartz.threadPool.threadCount", "200");
props.put("org.quartz.threadPool.threadPriority", "5");

quartzScheduler.setQuartzProperties(props);

您可以通过指定

来控制与数据库的连接数

org.quartz.dataSource.myDS.maxConnections = 5

参考此处获取示例配置 JDBC-JobStore Configuration