亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

由于近期線上單量暴漲,第三方反饋部分工單業(yè)務(wù)存在查詢處理失敗現(xiàn)象,經(jīng)排查是當(dāng)前系統(tǒng)通過(guò)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]

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

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

寫(xiě)到這,咱們先回顧下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秒,在沒(méi)有配置超時(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)上所說(shuō)的Feign調(diào)用服務(wù)的默認(rèn)時(shí)長(zhǎng)是1秒鐘,也就是如果超過(guò)1秒沒(méi)連接上或者超過(guò)1秒沒(méi)響應(yīng),那么會(huì)相應(yīng)的報(bào)錯(cuò)。

實(shí)際業(yè)務(wù)中服務(wù)如果響應(yīng)時(shí)間超過(guò)1秒,咱們可以按照實(shí)際響應(yīng)情況給予配置相對(duì)應(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請(qǐng)求服務(wù)超時(shí)異常排查的文章就介紹到這了,更多相關(guān)SpringCloud Feign請(qǐng)求服務(wù)超時(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot后臺(tái)實(shí)現(xiàn)文件上傳下載

    SpringBoot后臺(tái)實(shí)現(xiàn)文件上傳下載

    這篇文章主要為大家詳細(xì)介紹了SpringBoot后臺(tái)實(shí)現(xiàn)文件上傳下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 如何使用Spring+redis實(shí)現(xiàn)對(duì)session的分布式管理

    如何使用Spring+redis實(shí)現(xiàn)對(duì)session的分布式管理

    本篇文章主要介紹了如何使用Spring+redis實(shí)現(xiàn)對(duì)session的分布式管理,本文主要是在Spring中實(shí)現(xiàn)分布式session,采用redis對(duì)session進(jìn)行持久化管理,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 詳解Java中的pinpoint1.8.5安裝及使用指南

    詳解Java中的pinpoint1.8.5安裝及使用指南

    pinpoint是開(kāi)源在github上的一款A(yù)PM監(jiān)控工具,它是用Java編寫(xiě)的,用于大規(guī)模分布式系統(tǒng)監(jiān)控。這篇文章主要介紹了pinpoint1.8.5安裝及使用指南,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java JVM類(lèi)加載機(jī)制解讀

    Java JVM類(lèi)加載機(jī)制解讀

    JVM將class文件字節(jié)碼文件加載到內(nèi)存中, 并將這些靜態(tài)數(shù)據(jù)轉(zhuǎn)換成方法區(qū)中的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu),在堆(并不一定在堆中,HotSpot在方法區(qū)中)中生成一個(gè)代表這個(gè)類(lèi)的java.lang.Class 對(duì)象,作為方法區(qū)類(lèi)數(shù)據(jù)的訪問(wèn)入口,接下來(lái)將詳細(xì)講解JVM類(lèi)加載機(jī)制
    2021-11-11
  • Spring中RedisTemplate使用方法詳解

    Spring中RedisTemplate使用方法詳解

    Spring封裝了一個(gè)比較強(qiáng)大的模板,也就是redisTemplate,方便在開(kāi)發(fā)的時(shí)候操作Redis緩存,這篇文章主要給大家介紹了關(guān)于Java中RedisTemplate使用方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • 如何讓Jackson JSON生成的數(shù)據(jù)包含的中文以u(píng)nicode方式編碼

    如何讓Jackson JSON生成的數(shù)據(jù)包含的中文以u(píng)nicode方式編碼

    這篇文章主要介紹了如何讓Jackson JSON生成的數(shù)據(jù)包含的中文以u(píng)nicode方式編碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程

    Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程

    這篇文章主要介紹了Java實(shí)現(xiàn)AOP面向切面編程的實(shí)例教程,通常Java中的AOP都是利用Spring框架中造好的輪子來(lái)開(kāi)發(fā),而本文則關(guān)注于Java本身AOP的設(shè)計(jì)模式實(shí)現(xiàn),需要的朋友可以參考下
    2016-04-04
  • Java pdf和jpg互轉(zhuǎn)案例

    Java pdf和jpg互轉(zhuǎn)案例

    這篇文章主要介紹了Java pdf和jpg互轉(zhuǎn)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 非常全面的IReport的使用教程

    非常全面的IReport的使用教程

    iReport 是為JasperReports Library和JasperReports Server設(shè)計(jì)的報(bào)表可視化設(shè)計(jì)器。本教程給大家詳細(xì)介紹IReport的使用解析,感興趣的朋友一起看看吧
    2021-10-10
  • Java提取2個(gè)集合中的相同和不同元素代碼示例

    Java提取2個(gè)集合中的相同和不同元素代碼示例

    這篇文章主要介紹了Java提取2個(gè)集合中的相同和不同元素代碼示例,涉及對(duì)removeall方法的簡(jiǎn)單介紹,然后分享了主要的示例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-11-11

最新評(píng)論