消費者啓動,容許期間報task supervisor timed out 異常,解決

如何解決後端項目啓動時拋出 task supervisor timed out 異常

現象描述

後端項目啓動時拋出以下異常,可是該後段項目能正常啓動並註冊到註冊中心,不影響功能使用。java

2018-10-10 09:39:12.407 ERROR 8916 --- [DiscoveryClient-0] c.n.d.TimedSupervisorTask : task supervisor timed outbootstrap

java.util.concurrent.TimeoutException: null
at java.util.concurrent.FutureTask.get(FutureTask.java:205) ~[?:1.8.0_172]
at com.netflix.discovery.TimedSupervisorTask.run(TimedSupervisorTask.java:63) [eureka-client-1.7.2.jar:1.7.2]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_172]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_172]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_172]後端

緣由分析

項目啓動初始化時,會啓動兩個定時任務,一個是向eureka註冊,即心跳的線程,另外一個是從eureka獲取服務註冊列表,即刷新註冊列表緩存的線程,上述兩個線程都是每30s執行一次,默認超時時間都爲30s,因此當30s未執行完該任務是,便會拋出Timeout的異常。發送心跳的任務比較簡單,通常不會超時。而獲取註冊列表的任務,耗時較久。緩存

因爲註冊中心是全部服務通訊的基礎,因此部署在多個服務器的應用在通訊時可能會比較耗時,每每會發生超時。服務器

處理步驟

將該後段項目的 bootstrap.yml 文件中的 client.registryFetchIntervalSeconds 調大,建議調爲 30。.net

相關文章
相關標籤/搜索