我有一個使用@Scheduled註釋的各種計劃程序的Spring Boot應用程序。其中一些時間表使用fixedRate設置,其他時間使用cron。 fixedRate時間表運行良好,但我注意到在過去的一個月中,cron時間表觸發的實際時間每天會變化1-2小時。春季計劃Cron作業在錯誤的時間點火
即與
@Scheduled(cron = "0 0 2 * * *")
的cron設置工作將火上午3:00而不是2:00 AM。它也不是每天都在發生。它會在同一時間連續運行幾天,然後會發生一些事情,每次運行時都會關閉一小時,直到重新啓動應用程序。
服務器上的系統時間是準確的,我完全沒有想法。有沒有人遇到過這個?
編輯1
我把一些日誌記錄,以確定是否工作是不啓動以相同的間隔,而結果似乎是隨機的。這裏是開始/結束時間爲上述cron作業三天:
Format: Calendar.getInstance().getTime() (System.currentTimeMillis())
Start: Sat Oct 21 03:14:15 CDT 2017 (1508573655778)
End: Sat Oct 21 03:22:24 CDT 2017 (1508574144708)
Start: Sun Oct 22 02:26:58 CDT 2017 (1508657218774)
End: Sun Oct 22 02:35:12 CDT 2017 (1508657712492)
Start: Mon Oct 23 02:00:03 CDT 2017 (1508742003072)
End: Mon Oct 23 02:08:11 CDT 2017 (1508742491493)
嘿布萊克。我在上週五添加了一些日誌記錄,並讓它在週末運行以收集一些結果。我將這些結果發佈在我原來的問題中。 –
是的,如果這是他們應該做的事情,好像開始時間並沒有按照時間表開火。你有什麼其他註釋?是彈簧組件,控制器還是服務類中的預定方法? – Blake
終於搞明白了。我沒有ThreadPoolTaskScheduler設置,所以沒有足夠大的池大小來支持我所有的預定作業。其中一個會被激發,其他人會被阻塞,或者被放入某種內部隊列中,但當他們最終被解僱時,無論長時間排隊還是被阻塞,cron時鐘都會被抵消。 –