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鎖可以完全解決任務重複調度問題,且未降低任務併發調度吞吐量。