最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

記一次線上SpringCloud Feign請求服務(wù)超時(shí)異常排查問題

 更新時(shí)間:2022年01月13日 15:17:05   作者:小鄧學(xué)長  
這篇文章主要介紹了記一次線上SpringCloud Feign請求服務(wù)超時(shí)異常排查問題,本項(xiàng)目與下游項(xiàng)目均注冊在Eureka上面,對這個(gè)1秒就超時(shí)感到很迷惑,于是開始查閱底層源碼之旅。需要的朋友可以參考下

由于近期線上單量暴漲,第三方反饋部分工單業(yè)務(wù)存在查詢處理失敗現(xiàn)象,經(jīng)排查是當(dāng)前系統(tǒng)通過FeignClient調(diào)用下游系統(tǒng)出現(xiàn)部分超時(shí)失?。ó惓4a貼在下方)。

Caused by: feign.RetryableException: Read timed out executing POST http://xxxx
        at feign.FeignException.errorExecuting(FeignException.java:84) ~[feign-core-10.1.0.jar!/:na]
        at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:113) ~[feign-core-10.1.0.jar!/:na]
        at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78) ~[feign-core-10.1.0.jar!/:na]
        at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) ~[feign-core-10.1.0.jar!/:na]
        at com.sun.proxy.$Proxy141.creditReportConvert(Unknown Source) ~[na:na]
Caused by: java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_121]
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[na:1.8.0_121]
        at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[na:1.8.0_121]
        at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_121]
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_121]
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286) ~[na:1.8.0_121]
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345) ~[na:1.8.0_121]
        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:704) ~[na:1.8.0_121]
        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) ~[na:1.8.0_121]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1569) ~[na:1.8.0_121]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474) ~[na:1.8.0_121]
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[na:1.8.0_121]
        at feign.Client$Default.convertResponse(Client.java:143) ~[feign-core-10.1.0.jar!/:na]
        at feign.Client$Default.execute(Client.java:68) ~[feign-core-10.1.0.jar!/:na]
        at org.springframework.cloud.openfeign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:93) ~[spring-cloud-openfeign-core-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at org.springframework.cloud.openfeign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:56) ~[spring-cloud-openfeign-core-2.1.1.RELEASE.jar!/:2.1.1.RELEASE]
        at com.netflix.client.AbstractLoadBalancerAwareClient$1.call(AbstractLoadBalancerAwareClient.java:104) ~[ribbon-loadbalancer-2.3.0.jar!/:2.3.0]
        at com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1.call(LoadBalancerCommand.java:303) ~[ribbon-loadbalancer-2.3.0.jar!/:2.3.0]

通過系統(tǒng)慢請求捕捉攔截,發(fā)現(xiàn)當(dāng)前請求僅耗時(shí)1031毫秒,就觸發(fā)Read timed out超時(shí)錯(cuò)誤,本項(xiàng)目與下游項(xiàng)目均注冊在Eureka上面,對這個(gè)1秒就超時(shí)感到很迷惑,于是開始查閱底層源碼之旅。

通過跟蹤代碼可以在feign.Request內(nèi)部類Options構(gòu)造函數(shù)默認(rèn)配置連接超時(shí)10秒,讀超時(shí)60秒。然而本次調(diào)用請求僅耗時(shí)1秒左右就被掐斷連接提示超時(shí)錯(cuò)誤,初步判斷默認(rèn)這個(gè)超時(shí)配置并未生效導(dǎo)致。

寫到這,咱們先回顧下Feign鏈路完整調(diào)用流程步驟。

可以看出Feign調(diào)用分為Hystrix、Ribbon兩層,一般高版本的Hystrix默認(rèn)是關(guān)閉的(本項(xiàng)目Hystrix默認(rèn)是關(guān)閉的,那么現(xiàn)在需要去分析Ribbon層調(diào)用配置信息)

可以看到RibbonClientConfiguration默認(rèn)配置的讀超時(shí)和連接超時(shí)時(shí)間1000毫秒=1秒,在沒有配置超時(shí)情況下當(dāng)前這個(gè)超時(shí)是符合本次調(diào)用超時(shí)錯(cuò)誤觸發(fā)。

我們可以在FeignLoadBalancer的execute方法中看到當(dāng)IClientConfig為空的時(shí)候進(jìn)行覆蓋超時(shí)時(shí)間,默認(rèn)是取Ribbon的超時(shí)時(shí)間,并不是Feign Options默認(rèn)的超時(shí)時(shí)間。

public FeignLoadBalancer(ILoadBalancer lb, IClientConfig clientConfig,
            ServerIntrospector serverIntrospector) {
        super(lb, clientConfig);
        this.setRetryHandler(RetryHandler.DEFAULT);
        this.clientConfig = clientConfig;
        this.ribbon = RibbonProperties.from(clientConfig);
        RibbonProperties ribbon = this.ribbon;
        this.connectTimeout = ribbon.getConnectTimeout();
        this.readTimeout = ribbon.getReadTimeout();
        this.serverIntrospector = serverIntrospector;
    }

如果application.properties文件中有配置超時(shí)時(shí)間,則使用配置的超時(shí)時(shí)間。否則是取Ribbon默認(rèn)的超時(shí)時(shí)間,也就是網(wǎng)上所說的Feign調(diào)用服務(wù)的默認(rèn)時(shí)長是1秒鐘,也就是如果超過1秒沒連接上或者超過1秒沒響應(yīng),那么會(huì)相應(yīng)的報(bào)錯(cuò)。

實(shí)際業(yè)務(wù)中服務(wù)如果響應(yīng)時(shí)間超過1秒,咱們可以按照實(shí)際響應(yīng)情況給予配置相對應(yīng)的超時(shí)時(shí)間,下面分別貼出properties和yml版本的配置

#properties版本
feign.client.config.default.connectTimeout=60000
feign.client.config.default.readTimeout=60000
#yml版本
feign:
  client:
    config:
      default:
        connectTimeout: 60000
        readTimeout: 60000

到此這篇關(guān)于記一次線上SpringCloud Feign請求服務(wù)超時(shí)異常排查的文章就介紹到這了,更多相關(guān)SpringCloud Feign請求服務(wù)超時(shí)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java項(xiàng)目實(shí)現(xiàn)猜拳小游戲

    java項(xiàng)目實(shí)現(xiàn)猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了java項(xiàng)目實(shí)現(xiàn)猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • SpringBoot3如何集成Hazelcast

    SpringBoot3如何集成Hazelcast

    Hazelcast是一款優(yōu)秀的開源內(nèi)存數(shù)據(jù)網(wǎng)格平臺(tái),它能夠提供分布式數(shù)據(jù)存儲(chǔ)和緩存解決方案,通過與SpringBoot3的整合,開發(fā)者可以輕松實(shí)現(xiàn)分布式緩存、數(shù)據(jù)共享和會(huì)話管理等功能,Hazelcast的內(nèi)存數(shù)據(jù)網(wǎng)格特性支持高性能的緩存系統(tǒng),能夠減少數(shù)據(jù)庫訪問次數(shù),提升應(yīng)用性能
    2024-10-10
  • Springboot與Maven多環(huán)境配置的解決方案

    Springboot與Maven多環(huán)境配置的解決方案

    多環(huán)境配置的解決方案有很多,我看到不少項(xiàng)目的多環(huán)境配置都是使用Maven來實(shí)現(xiàn)的,本文就實(shí)現(xiàn)Springboot與Maven多環(huán)境配置,感興趣的可以了解下
    2021-06-06
  • Windows下將JAVA?jar注冊成windows服務(wù)的方法

    Windows下將JAVA?jar注冊成windows服務(wù)的方法

    這篇文章主要介紹了Windows下將JAVA?jar注冊成windows服務(wù)的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot集成MQ的過程(四種交換機(jī)的實(shí)例)

    SpringBoot集成MQ的過程(四種交換機(jī)的實(shí)例)

    本文介紹了RabbitMQ中四種交換機(jī)(直連、扇出、主題和頭交換機(jī))的使用方法,包括路由機(jī)制、典型場景和實(shí)現(xiàn)步驟,通過創(chuàng)建SpringBoot項(xiàng)目并配置交換機(jī)、隊(duì)列和消費(fèi)者,展示了如何發(fā)送和接收消息,每種交換機(jī)的示例代碼和測試步驟也一并提供,感興趣的朋友一起看看吧
    2025-03-03
  • SpringSecurity中的表單認(rèn)證詳細(xì)解析

    SpringSecurity中的表單認(rèn)證詳細(xì)解析

    這篇文章主要介紹了SpringSecurity中的表單認(rèn)證詳細(xì)解析,在上一篇文章中,我們初步引入了?Spring?Security,并使用其默認(rèn)生效的?HTTP?基本認(rèn)證保護(hù)?URL?資源,在本篇文章中我們使用表單認(rèn)證來保護(hù)?URL?資源,需要的朋友可以參考下
    2023-12-12
  • IDEA啟動(dòng)服務(wù)提示端口被占用,Web?server?failed?to?start.Port?was?already?in?use.

    IDEA啟動(dòng)服務(wù)提示端口被占用,Web?server?failed?to?start.Port?was?al

    這篇文章主要介紹了IDEA啟動(dòng)服務(wù)提示端口被占用,Web?server?failed?to?start.Port?was?already?in?use.,本文給大家分享解決方案,分為linux系統(tǒng)和windows系統(tǒng)解決方案,需要的朋友可以參考下
    2023-07-07
  • Mybatis 插入一條或批量插入 返回帶有自增長主鍵記錄的實(shí)例

    Mybatis 插入一條或批量插入 返回帶有自增長主鍵記錄的實(shí)例

    下面小編就為大家分享一篇Mybatis 插入一條或批量插入 返回帶有自增長主鍵記錄的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • SpringBoot配置SSL同時(shí)支持http和https訪問實(shí)現(xiàn)

    SpringBoot配置SSL同時(shí)支持http和https訪問實(shí)現(xiàn)

    本文主要介紹了SpringBoot配置SSL同時(shí)支持http和https訪問實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java IO流深入理解

    Java IO流深入理解

    這篇文章主要介紹了java IO流的深入理解,下面和小編來一起學(xué)習(xí)一下吧,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容
    2021-07-07

最新評(píng)論

阿巴嘎旗| 康平县| 金坛市| 金阳县| 筠连县| 葵青区| 焉耆| 荔浦县| 青海省| 策勒县| 七台河市| 玉山县| 华蓥市| 宝应县| 肥东县| 怀安县| 大安市| 安国市| 崇文区| 乌海市| 中西区| 文山县| 莒南县| 虹口区| 西林县| 柘城县| 舒兰市| 汉阴县| 得荣县| 凤台县| 牟定县| 长垣县| 彰武县| 那曲县| 宁化县| 偃师市| 额敏县| 新安县| 沙坪坝区| 西华县| 都江堰市|