Spring Boot中得定時任務執行一段時間後突然停了

西北晴天一片雲發表於2020-10-28

描述:

定時器執行一段時間之後自己停止。

原因:

http請求出現某種錯誤的時候,http請求僵死,導致執行緒也不再往下執行。最終導致後面的定時任務也不再執行

由於httpclient自己沒有預設超時時間的設定,當開發人員沒有設定超時間是的時候,在server的服務端網路出現問題或者一直不返回給客戶端資料結果,就發現client端的請求執行緒一直卡住不會釋放,如果這個是執行緒池中的執行緒,就會一直佔用執行緒池資源,導致執行緒池不能響應後續的的任務。

解決方法:在http請求的程式碼中設定超時時間

HttpURLConnection conn = initHttpConnection(url);
        conn.setConnectTimeout(20*1000);
        conn.setReadTimeout(20*1000);

相關文章