針對xxl-job調度失敗,java.lang.RuntimeException: Network request error: Connect to failed: connect timed

針對xxl-job定時任務調度失敗,並且心跳檢測msg:java.lang.RuntimeException: Network request error: Connect to ip:端口 [/ip] failed: connect timed out的問題的總結:

之前job-admin一直能正常調度任務,突然有一天調度出錯了,但是不是全部出錯,有的調度成功,有的調度失敗,顯示心跳檢測未通過。調度結果如下圖:

起初因爲是job-admin的問題,通過對job-admin進行輸出日誌發現RemoteHttpJobBean該類在部署job-admin的服務器上對於某一定時的任務有時候會輸出日誌,有時則不會,按照官方文檔講解,RemoteHttpJobBean是所有定時任務執行調度的入口,但是某一個定時任務並未在服務器上輸出RemoteHttpJobBean的打印信息,卻在job_qrtz_trigger_log表中新增了一條記錄,說明程序還是通過RemoteHttpJobBean執行了調度,想了很久都沒有想到其中的關鍵。最後在job_qrtz_scheduler_state表中發現了一些端倪,因爲job-admin只部署了一臺服務器,應該只會有一條記錄,但是在job_qrtz_scheduler_state卻存在兩條記錄,感覺應該是這個問題導致的,後來想起來新弄了一套環境,也部署了一套job-admin,後來把新環境的job-admin停掉以後,調度就正常了。

xxl-job的表job_qrtz_scheduler_state表的記錄數跟部署的job-admin的服務器有關(如果幾臺服務器公用一個數據庫的情況下),針對一個數據庫對應多個job-admin服務的情況,可以在配置文件中爲不同的服務指定不同的sched_name,防止定時任務調度的時候回串套。即防止同一個sched_name對應兩個實例。

 

PS:另外在查找問題的過程中發現有一篇關於xxl-job的調度執行過程和執行器的加載流程講解很詳細的文章,推薦給大家。https://www.jianshu.com/p/d75800b5c9f9

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章