我們針對各種計劃運行Quartz.NET,計劃範圍從每30秒到每週一次。Quartz.NET - 計劃任務隨機停止運行
在回顧我們的內部採伐記錄時,我們發現有些作業已經停止運行,因爲沒有明顯的原因,即使其他作業仍在繼續。例如,我們每30秒鐘的工作在給定的時間內都失敗了,而每10分鐘的工作持續幾個小時,然後也失敗了。日後的任務稍後停止。
我們啓用了Quartz日誌記錄,發現以下內容。
LOG上一頁火災,這是成功的:
2014-09-19 08:20:00.0130 DEBUG Producing instance of Job 'DEFAULT.Scheduled task #5', class=TaskRunner
2014-09-19 08:20:00.0130 DEBUG Calling Execute on job DEFAULT.Scheduled task #5
2014-09-19 08:20:00.0130 DEBUG Batch acquisition of 1 triggers
2014-09-19 08:20:00.8710 DEBUG Trigger instruction : NoInstruction
2014-09-19 08:20:00.8710 DEBUG Batch acquisition of 1 triggers
LOG第一次失敗的:
2014-09-19 08:30:00.0046 DEBUG Producing instance of Job 'DEFAULT.Scheduled task #5', class=TaskRunner
2014-09-19 08:30:00.0046 DEBUG Calling Execute on job DEFAULT.Scheduled task #5
2014-09-19 08:30:00.0046 DEBUG Batch acquisition of 1 triggers
在此之後,直到我們重新啓動該服務這個特殊的工作永遠不會再次運行。沒有跡象表明我們的代碼是在這個特定的實例上運行的,因爲我們在內部執行了自己的日誌記錄,這在當時沒有發生。
我們的失火處理配置爲每一項工作如下:
... TriggerBuilder.Create()
.WithCronSchedule(task.CronSchedule, x => x.WithMisfireHandlingInstructionDoNothing())
.Build();
我明白了「DoNothing」指令告訴它跳過這個火,繼續進行計劃。因此,如果發生失火,我預計它會在下次着火時間再次起火。
1)爲什麼我們的Quartz工作隨機失敗?
2)我們可以做些什麼來進一步調查?
謝謝,我們將執行此操作,看看它是否有幫助。 – 2014-09-30 22:16:51