業務場景:
Java定時任務突然停止,不在執行
業務場景:透過定時任務,定時生成資料檔案,再SFTP上傳到遠端伺服器上
查詢問題原因:
1. 查詢定時任務是否啟用:資料庫記錄狀態為啟用
2. 查詢應用日誌
正常日誌資訊:
異常日誌資訊
缺少上傳檔案資訊。懷疑是當時網路突然不通,經過網路組確認缺失是8號網路出現異常,但是在9號時就沒有SFTP上傳日誌資訊了。懷疑定時任務停止,但是是因為什麼原因停止的呢 ?
繼續查詢日誌。
查詢java堆疊資訊jstack
連線遠端伺服器的資訊還在,正常情況下是查詢不到該連線資訊的。因為連線釋放就不會存在該資訊。那既然存在該資訊就說明上次的定時任務沒有執行完成,連線沒有釋放。那為什麼連線沒有釋放會導致以後的定時沒有起作用呢?開始查詢程式碼:原來程式碼裡的定時是單執行緒的,相當於連線池中只有一個連線,這個執行緒因為網路原因導致連線沒有釋放,該連線一直在佔用。第二天定時任務再啟動時,得不到連線,導致定時任務沒有啟動。
PS:因為是兩臺機器做的負載均衡,為了不影響業務及日誌檢視就重啟一臺伺服器tomcat,保證業務正常。
最新評論