现网有7个定时任务,其中一个定时任务经常会执行一段时间后停止,重启多次依然如此,quartz默认线程数为10,使用了@DisallowConcurrentExecution注解,问题依旧。
经观察,发现出现问题的任务设定的每个小时执行一次,但每次执行时间都很长,一般会有七八个小时,其他正常的任务都在很短的时间内执行完成。怀疑是由于任务执行较长的原因,因此对该任务进行了结构调整
解决方案:
在耗时较长的任务调整为异步执行,job中只是组织数据,放入缓存,由另外一条线程从缓存中获取数据进行处理,如果另外一条线程还未处理完上一批次的数据,则下次job任务执行时不再向缓存中添加数据。
经过以上处理后,经过观察,在以往两三天就会停止的sas任务,没有再出现过任务不执行的问题。(但具体原因还需要时间查看下quartz底层实现机制)