【Spring Cloud】spring cloud 调用feign请求超时 feign.RetryableException: Read timed out executing POST

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 【Spring Cloud】spring cloud 调用feign请求超时 feign.RetryableException: Read timed out executing POST

一、问题描述

Spring Cloud项目,两个微服务之间调用报错超时,控制台抛出异常,截取部分报错:

feign.RetryableException: Read timed out executing POST http://back-control-engine/client/v1.0/robotClient/robotTest

Caused by: java.net.SocketTimeoutException: Read timed out

feign.RetryableException: Read timed out executing POST http://back-control-engine/client/v1.0/robotClient/robotTest
  at feign.FeignException.errorExecuting(FeignException.java:84)
  at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:113)
  at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78)
  at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
  at com.sun.proxy.$Proxy234.robotTest(Unknown Source)
  at com.uiotsoft.back.brain.platform.business.service.impl.RobotClientServiceImpl.robotTest(RobotClientServiceImpl.java:28)
  at com.uiotsoft.back.brain.platform.controller.api.RobotClientController.voiceChatClient(RobotClientController.java:33)
  at com.uiotsoft.back.brain.platform.controller.api.RobotClientController$$FastClassBySpringCGLIB$$61a13ae5.invoke(<generated>)
  at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
  at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
  at com.uiotsoft.back.brain.platform.config.AopConfig.doAround(AopConfig.java:55)
  at sun.reflect.GeneratedMethodAccessor245.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
  at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
  at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747)
  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.SocketTimeoutException: Read timed out
  at java.net.SocketInputStream.socketRead0(Native Method)
  at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
  at java.net.SocketInputStream.read(SocketInputStream.java:171)
  at java.net.SocketInputStream.read(SocketInputStream.java:141)
  at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
  at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
  at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
  at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:735)
  at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
  at feign.Client$Default.convertResponse(Client.java:143)
  at feign.Client$Default.execute(Client.java:68)
  at org.springframework.cloud.openfeign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:114)
  at org.springframework.cloud.openfeign.ribbon.RetryableFeignLoadBalancer$1.doWithRetry(RetryableFeignLoadBalancer.java:94)
  at rx.Observable.unsafeSubscribe(Observable.java:10327)
  at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
  at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42)
  at rx.Observable.unsafeSubscribe(Observable.java:10327)
  at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
  at rx.Observable.subscribe(Observable.java:10423)
  at rx.Observable.subscribe(Observable.java:10390)
  at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:443)
  at rx.observables.BlockingObservable.single(BlockingObservable.java:340)
  at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:112)
  at org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient.execute(LoadBalancerFeignClient.java:83)
  ... 132 common frames omitted

二、问题原因

这是一个http请求报错超时,因为feign的调用分为两层:Ribbon的调用和Hystrix的调用,所以我们在配置文件中添加超时配置即可。高版本的Hystrix默认是关闭的,可以不设置。

三、解决方案

所以在 application.yml 配置文件中设置 ribbon 即可:

ribbon:
    # 请求处理的超时时间
    ReadTimeout: 60000
    # 请求连接的超时时间
    ConnectTimeout: 60000

或者 在 application.properties 配置文件中设置 ribbon

# 请求处理的超时时间
ribbon.ReadTimeout: 60000
# 请求连接的超时时间
ribbon.ConnectTimeout: 60000

完结!


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
10天前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
|
1月前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
180 5
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
197 2
|
3月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
58 1
Spring MVC——项目创建和建立请求连接
|
3月前
|
前端开发 Java Spring
【Spring】“请求“ 之后端传参重命名,传递数组、集合,@PathVariable,@RequestPart
【Spring】“请求“ 之后端传参重命名,传递数组、集合,@PathVariable,@RequestPart
52 2
|
3月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
110 2
|
监控 前端开发 Java
Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)
Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)
208 0
|
6天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
97 17
Spring Boot 两种部署到服务器的方式
|
6天前
|
Dart 前端开发 JavaScript
springboot自动配置原理
Spring Boot 自动配置原理:通过 `@EnableAutoConfiguration` 开启自动配置,扫描 `META-INF/spring.factories` 下的配置类,省去手动编写配置文件。使用 `@ConditionalXXX` 注解判断配置类是否生效,导入对应的 starter 后自动配置生效。通过 `@EnableConfigurationProperties` 加载配置属性,默认值与配置文件中的值结合使用。总结来说,Spring Boot 通过这些机制简化了开发配置流程,提升了开发效率。
38 17
springboot自动配置原理
|
11天前
|
XML JavaScript Java
SpringBoot集成Shiro权限+Jwt认证
本文主要描述如何快速基于SpringBoot 2.5.X版本集成Shiro+JWT框架,让大家快速实现无状态登陆和接口权限认证主体框架,具体业务细节未实现,大家按照实际项目补充。
60 11
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等