quartz里job不执行的解决方案

使用框架spring3+quartz1.8

生产环境中碰到会有job一直不执行的情况,后来分析是因为quartz中线程总数太少,而项目中所有的job都是并发执行的就会导致当到达时间节点时如果线程已经用完,则JOB不会执行等到下次job执行时间节点,如果项目中存在很多job执行过程耗时比时间周期还长就会导致这种情况发生。

解决办法

1.更具实际情况动态调整quartz线程池大小

quartz里job不执行的解决方案_第1张图片

这样就不会存在过多短时间周期内大量未结束的job导致线程用完,新的job无法开始执行。

2.把不用并发执行的job禁止并发执行


禁用并发执行的job在未执行完时到达下一个开始时间不会占用一个新的线程去执行,但需要更具业务情况来确定该job是否需要并发执行。


最终我是1,2结合先把总线程数调大,再将一些定时同步数据的job都改为非并发执行,解决!

你可能感兴趣的:(java,EE)