【Ribbon与OpenFeign】的超时设置(解决RetryableException: Read timed out executing问题)
创始人
2025-05-28 14:35:43

Ribbon与OpenFeign的超时设置(解决RetryableException: Read timed out executing问题)

问题

feign.RetryableException: Read timed out executing GET http://CLOUD-PAYMENT-SERVICE/payment/feign/timeOutat feign.FeignException.errorExecuting(FeignException.java:213)at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:115)at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:80)
java.net.SocketTimeoutException: Read timed out

OpenFeign的超时设置

default 默认是全局的,将 default 换成某个服务的名称可以设置单个服务的超时时间

##设置feign客户端的超时时间
#建立连接所用的时间,适用于网络状况正常的情况下,两端连接所需要的时间
feign.client.config.default.connectTimeout: 8000
#指建立连接后从服务端读取到可用资源所用的时间
feign.client.config.default.readTimeout: 8000

Ribbon的超时设置

#请求连接的超时时间(ms),限制20秒内必须请求到服务,并不限制服务处理的返回时间(缺省时默认1000ms)
ribbon.ConnectTimeout: 20000
#请求处理的超时时间(ms),下级服务响应最大时间,超出时间消费方(路由也是消费方)返回timeout(缺省时默认1000ms)
ribbon.ReadTimeout: 20000
ribbon.SocketTimeout: 20000
#同一台实例最大重试次数,不包括首次调用(对当前实例的重试次数)
ribbon.MaxAutoRetries: 0
#重试负载均衡其他的实例最大重试次数,不包括首次调用(切换实例的重试次数)
ribbon.MaxAutoRetriesNextServer: 0
#是否所有操作都重试
ribbon.OkToRetryOnAllOperations: false#单独设置某个服务的超时时间,会覆盖其他的超时时间限制,服务的名称以注册中心页面显示的名称为准,超时时间不可大于断路器的超时时间
#service-a.ribbon.ReadTimeout: 50000
#service-a.ribbon.ConnectTimeout: 50000

结论

FeignRibbon 的超时时间只会有一个生效,规则:如果没有设置过 feign 超时,也就是等于默认值的时候,就会读取 ribbon 的配置,使用 ribbon 的超时时间和重试设置。否则使用 feign 自身的设置。两者是二选一的,且 feign 优先。

怎么看当前请求的超时

源码跟踪参考微服务系列:Spring Cloud 之 Feign、Ribbon、Hystrix 三者超时时间配置

feign.Request 中可以发现 OpenFeign 的默认的 connectTimeout 是 10 秒,readTimeout 是 60 秒。
在这里插入图片描述
其实 OpenFeign 集成了 RibbonRibbon 的默认超时连接时间、读超时时间都是 1 秒,源码在RibbonClientConfiguration#ribbonClientConfig
在这里插入图片描述
org.springframework.cloud.openfeign.ribbon.FeignLoadBalancer#execute如图打断点即可看到本次请求的超时时间.
在这里插入图片描述

参考文档

  1. 【推荐】微服务系列:Spring Cloud 之 Feign、Ribbon、Hystrix 三者超时时间配置
  2. Ribbon的超时和重试机制

相关内容

热门资讯

环境保护英语作文(经典3篇) 环境保护英语作文 篇一Title: The Importance of Environmental ...
为朋友哀悼英语作文范文【精选... 为朋友哀悼英语作文范文 篇一In Loving Memory: A Tribute to my Fr...
我和英语老师的故事作文500... 我和英语老师的故事作文500字 篇一我的英语老师是一位非常严格但又非常有趣的人。她总是充满活力地教授...
描写一个人的外貌的英语作文【... 描写一个人的外貌的英语作文 篇一Title: A Glimpse of BeautyThe mome...
倡议书范文英语作文(精彩5篇... 倡议书范文英语作文 篇一Title: A Call for Environmental Protec...