1.xxl-job 任务重复调度问题 版本 1.9.3.RELEASE
【quartz属性控制查询Trigger加锁独占】
在quartz属性配置文件中配置属性值:org.quartz.jobStore.acquireTriggersWithinLock=true 保证在查询待触发Trigger时为独占模式。
优点:改动最小,最简单。
缺点:锁粒度相对较粗,里面包含了多个查询。基于数据库锁控制下超时后,可能会增加导致job misfire的可能性
2. xxl-job偶尔执行超时的问题
执行器的服务前置的是LB或者NGINX负载的情况下,会出现调度中心与前置负载之间的链接空闲超时,而又缺乏应用级别心跳保持,从而导致前置负载远程关闭链接。这种情况禁止手动注册执行器的地址。
参考链接:https://github.com/xuxueli/xxl-job/issues/1026(最新版1.5.0已修复,xxl-rpc添加了长连心跳保活:双向心跳检测周期性发送心跳进行长连保活)
压测结论
- 以目前已有配置来看XXL-JOB可支撑4000-5000/min 任务调度并发,且不发生调度遗漏。超过5000会有调度遗漏
- 获取任务添加DB锁可以完全解决任务重复调度问题,且未降低任务并发调度吞吐量。