From b4288225a0ffa5147b8f73def78708377483c982 Mon Sep 17 00:00:00 2001 From: tjq Date: Tue, 9 Feb 2021 22:47:36 +0800 Subject: [PATCH] fix: use fixedDelay instead of fixedRate to fix the problem of scheduling of multiple threads causing system crashes #213 --- .../service/timing/schedule/OmsScheduleService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/timing/schedule/OmsScheduleService.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/timing/schedule/OmsScheduleService.java index ef5b431a..2f59b9bf 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/timing/schedule/OmsScheduleService.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/service/timing/schedule/OmsScheduleService.java @@ -70,9 +70,10 @@ public class OmsScheduleService { private static final long SCHEDULE_RATE = 15000; @Async("omsTimingPool") - @Scheduled(fixedRate = SCHEDULE_RATE) + @Scheduled(fixedDelay = SCHEDULE_RATE) public void timingSchedule() { + long start = System.currentTimeMillis(); Stopwatch stopwatch = Stopwatch.createStarted(); // 先查询DB,查看本机需要负责的任务 @@ -111,6 +112,11 @@ public class OmsScheduleService { } log.info("[JobScheduleService] cron schedule: {}, workflow schedule: {}, frequent schedule: {}.", cronTime, wfTime, stopwatch.stop()); + + long cost = System.currentTimeMillis() - start; + if (cost > SCHEDULE_RATE) { + log.warn("[JobScheduleService] The database query is using too much time({}ms), please check if the database load is too high!", cost); + } } /**