iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >线上SpringCloud Feign请求服务超时异常怎么排查
  • 657
分享到

线上SpringCloud Feign请求服务超时异常怎么排查

2023-06-26 06:06:13 657人浏览 独家记忆
摘要

今天小编给大家分享一下线上SpringCloud Feign请求服务超时异常怎么排查的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一

今天小编给大家分享一下线上SpringCloud Feign请求服务超时异常怎么排查的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

由于近期线上单量暴涨,第三方反馈部分工单业务存在查询处理失败现象,经排查是当前系统通过FeignClient调用下游系统出现部分超时失败(异常代码贴在下方)。

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]

通过系统慢请求捕捉拦截,发现当前请求仅耗时1031毫秒,就触发Read timed out超时错误,本项目与下游项目均注册在Eureka上面,对这个1秒就超时感到很迷惑,于是开始查阅底层源码之旅。

线上SpringCloud Feign请求服务超时异常怎么排查

线上SpringCloud Feign请求服务超时异常怎么排查

通过跟踪代码可以在feign.Request内部类Options构造函数默认配置连接超时10秒,读超时60秒。然而本次调用请求仅耗时1秒左右就被掐断连接提示超时错误,初步判断默认这个超时配置并未生效导致。

线上SpringCloud Feign请求服务超时异常怎么排查

写到这,咱们先回顾下Feign链路完整调用流程步骤。

线上SpringCloud Feign请求服务超时异常怎么排查

可以看出Feign调用分为Hystrix、Ribbon两层,一般高版本的Hystrix默认是关闭的(本项目Hystrix默认是关闭的,那么现在需要去分析Ribbon层调用配置信息)

线上SpringCloud Feign请求服务超时异常怎么排查

可以看到RibbonClientConfiguration默认配置的读超时和连接超时时间1000毫秒=1秒,在没有配置超时情况下当前这个超时是符合本次调用超时错误触发。

线上SpringCloud Feign请求服务超时异常怎么排查

我们可以在FeignLoadBalancer的execute方法中看到当IClientConfig为空的时候进行覆盖超时时间,默认是取Ribbon的超时时间,并不是Feign Options默认的超时时间。

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文件中有配置超时时间,则使用配置的超时时间。否则是取Ribbon默认的超时时间,也就是网上所说的Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,那么会相应的报错。

实际业务中服务如果响应时间超过1秒,咱们可以按照实际响应情况给予配置相对应的超时时间,下面分别贴出properties和yml版本的配置

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

以上就是“线上SprinGCloud Feign请求服务超时异常怎么排查”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: 线上SpringCloud Feign请求服务超时异常怎么排查

本文链接: https://www.lsjlt.com/news/307029.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 线上SpringCloud Feign请求服务超时异常怎么排查
    今天小编给大家分享一下线上SpringCloud Feign请求服务超时异常怎么排查的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-06-26
  • 记一次线上SpringCloudFeign请求服务超时异常排查问题
    由于近期线上单量暴涨,第三方反馈部分工单业务存在查询处理失败现象,经排查是当前系统通过FeignClient调用下游系统出现部分超时失败(异常代码贴在下方)。 Caused by: ...
    99+
    2024-04-02
  • 网站高防IP请求超时怎么排查
    网站高防IP请求超时排查的方法:1、查看源站的流量和请求量是否有大量增长,对比高防IP管理控制台中的监控,看是否有异常;2、查看源站服务器的进程状态、CPU/内存占用情况、机房带宽的监控情况等,看是否有异常;3、如果是个别客户端出现502错...
    99+
    2024-04-02
  • 租用高防服务器请求超时怎么进行排查
    租用高防服务器请求超时排查的方法:1、查看源站的流量和请求量是否有大量增长,对比高防IP管理控制台中的监控;2、查看源站服务器的进程状态、CPU/内存占用情况、机房带宽的监控情况等,看是否有异常;3、如果是个别客户端出现502错误,收集客户...
    99+
    2024-04-02
  • 租用高防服务器请求超时如何排查
    租用高防服务器请求超时可能由多种原因引起,以下是一些常见的排查方法: 检查网络连接:首先要检查服务器的网络连接,确保网络连接正常...
    99+
    2024-05-09
    高防服务器
  • 小程序server请求微信服务器超时怎么办
    这篇文章主要介绍了小程序server请求微信服务器超时怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。今天有同学在测试小程序的过程中,发...
    99+
    2024-04-02
  • 亚马逊服务器跨域请求异常怎么办啊
    检查服务器配置:检查服务器的配置文件,确保服务器能够跨域请求,例如通过使用SSL证书、访问令牌等方式。 检查证书:确保所有证书都是有效的,如果证书不正确,可以尝试更换证书或联系亚马逊客服解决。 检查证书:检查所有服务器端证书,确保其都是有...
    99+
    2023-10-27
    亚马逊 异常 服务器
  • 亚马逊服务器跨域请求异常怎么回事啊
    解决跨域请求异常的方法有很多,比如使用代理服务器来避免在前端发生跨域问题,或者通过使用 Jsonp 跨域解决方案来解决跨域请求问题。另外,还可以通过配置 Vue.config.js 的devServer(开发环境)里的代理服务器来避免在前端...
    99+
    2023-10-27
    亚马逊 怎么回事 异常
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作