先看下我的配置:

ribbon:

MaxAutoRetries: 1 #最大重试次数,当Eureka中可以找到服务,但是服务连不上时将会重试

MaxAutoRetriesNextServer: 1 #切换实例的重试次数

OkToRetryOnAllOperations: false # 对所有的操作请求都进行重试,如果是get则可以,如果是post,put等操作没有实现幂等的情况下是很危险的,所以设置为false

ConnectTimeout: 1000 #请求连接的超时时间

ReadTimeout: 1800 #请求处理的超时时间

hystrix:

command:

default:

execution:

isolation:

thread:

timeoutInMilliseconds: 3000

#如果配置ribbon的重试,hystrix的超时时间要大于ribbon的超时时间,ribbon才会重试

#hystrix的超时时间=(1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout 比较好,具体看需求

Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制就没有任何意义了。

从上面的配置来说,ribbon超时配置为1800,请求超时后,该实例会重试1次,更新实例会重试1次。

所以hystrix的超时时间要大于 (1 + MaxAutoRetries + MaxAutoRetriesNextServer) * ReadTimeout 比较好,具体看需求进行配置。

Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制就没有任何意义了。

补充知识:Spring Cloud Feign 第一次调用超时(Read timed out)的解决办法

feign-client在第一次调用微服务会出现Read timed out异常,提示的报错信息:

java.net.SocketTimeoutException: Read timed out

这是由于在调用其他微服务接口前,会去请求该微服务的相关信息(地址、端口等),并做一些初始化操作,由于默认的懒加载特性,导致了在第一次调用时,出现超时的情况,解决方法主要有两种:

第一种办法是设置超时时间,具体设置成多少,因项目而异,配置如下:

# 全局关闭Hystrix超时,对所有微服务有效

hystrix.command.default.execution.timeout.enabled: false

# 关闭某一个微服务的超时

hystrix.command..execution.timeout.enabled: false

# 全局设置超时时间为60秒

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000

# 设置某一个微服务的超时时间为60秒

hystrix.command..execution.isolation.thread.timeoutInMilliseconds: 60000

# 设置ribbon超时时间

ribbon:

ReadTimeout: 20000

ConnectTimeout: 20000

第二种办法,也是比较推荐的方式,配置ribbon立即加载,此处需要注意的是,光配置立即加载是不生效的,还要配置客户端列表,配置如下,详细配置请点击:

ribbon:

eager-load:

enabled: true

clients: distribution, material-product, outer-data

最后附上未开启立即加载时,第一次调用打印的日志:

2019-05-27 18:05:33.819|INFO|1986|http-nio-18884-exec-2|clipcloud-configuration|3752c9412075144e|3752c9412075144e|false|com.migu.clipcloud.configuration.ConfigurationServiceApplication.test1-55|time:2019-05-27 18:05:33.819

2019-05-27 18:05:33.826|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|com.migu.clipcloud.services.client.FeignHeadConfiguration.lambda$requestInterceptor$2-51|add request header for feignclient, key:cookie,value:JSESSIONID.8250e395=node08z98wvylx12lwh89c6v09qk92.node0; screenResolution=1440x900; m=2258:cmFiYml0bXE6cmFiYml0bXE%253D

2019-05-27 18:05:33.828|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|org.springframework.context.support.AbstractApplicationContext.prepareRefresh-588|Refreshing SpringClientFactory-distribution: startup date [Mon May 27 18:05:33 CST 2019]; parent: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@203dd56b

2019-05-27 18:05:33.850|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.-153|JSR-330 'javax.inject.Inject' annotation found and supported for autowiring

2019-05-27 18:05:33.864|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|com.netflix.config.ChainedDynamicProperty$ChainLink.checkAndFlip-115|Flipping property: distribution.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647

2019-05-27 18:05:33.865|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|com.netflix.util.concurrent.ShutdownEnabledTimer.-58|Shutdown hook installed for: NFLoadBalancer-PingTimer-distribution

2019-05-27 18:05:33.866|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|com.netflix.loadbalancer.BaseLoadBalancer.initWithConfig-192|Client: distribution instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=distribution,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null

2019-05-27 18:05:33.884|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|com.netflix.loadbalancer.DynamicServerListLoadBalancer.enableAndInitLearnNewServersFeature-222|Using serverListUpdater PollingServerListUpdater

2019-05-27 18:05:33.886|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|com.netflix.config.ChainedDynamicProperty$ChainLink.checkAndFlip-115|Flipping property: distribution.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647

2019-05-27 18:05:33.887|INFO|1986|hystrix-distribution-1|clipcloud-configuration|3752c9412075144e|405382c2fc629614|false|com.netflix.loadbalancer.DynamicServerListLoadBalancer.restOfInit-150|DynamicServerListLoadBalancer for client distribution initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=distribution,current list of Servers=[192.168.26.103:18887],Load balancer stats=Zone stats: {defaultzone=[Zone:defaultzone; Instance count:1; Active connections count: 0; Circuit breaker tripped count: 0; Active connections per server: 0.0;]

},Server stats: [[Server:192.168.26.103:18887; Zone:defaultZone; Total Requests:0; Successive connection failure:0; Total blackout seconds:0; Last connection made:Thu Jan 01 08:00:00 CST 1970; First connection made: Thu Jan 01 08:00:00 CST 1970; Active Connections:0; total failure count in last (1000) msecs:0; average resp time:0.0; 90 percentile resp time:0.0; 95 percentile resp time:0.0; min resp time:0.0; max resp time:0.0; stddev resp time:0.0]

]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@173441c2

2019-05-27 18:05:33.906|INFO|1986|http-nio-18884-exec-2|clipcloud-configuration|3752c9412075144e|3752c9412075144e|false|com.migu.clipcloud.configuration.ConfigurationServiceApplication.test1-57|time:2019-05-27 18:05:33.906

2019-05-27 18:05:34.888|INFO|1986|PollingServerListUpdater-0|clipcloud-configuration||||com.netflix.config.ChainedDynamicProperty$ChainLink.checkAndFlip-115|Flipping property: distribution.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647

以上这篇feign的ribbon超时配置和hystrix的超时配置说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持龙方网络。

ribbon基于接口配置超时_feign的ribbon超时配置和hystrix的超时配置说明相关推荐

  1. 配置设备作为DHCP 服务器(基于接口地址池)

    DHCP 服务器简介: 通常用户希望网络中的每台终端能够动态获取IP地址.DNS服务器的IP地址.路由信 息.网关信息等网络参数,不需要手动配置终端的IP地址等网络参数:另外,针对一 些移动终端(手机 ...

  2. 玩转华为数据中心交换机系列 | 配置基于接口划分VLAN示例

    素材来源:华为数据中心交换机配置指南 一边学习一边整理试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:玩转华为数据中心交换机系列 | 汇总_COCOgsta的博客-CSDN博客 组网需求 如 ...

  3. 配置基于接口的ARP表项限制和端口安全(限制用户私自接入傻瓜交换机或非法主机接入)

    应用场景:为了防止未授权用户接入网络.用户私自接入交换机.路由器等设备,给公司网络管理带来安全隐患.通过相关技术手段给予禁止,方法有如下二种:配置端口安全和配置基于接口的ARP表项限制 分别介绍二种方 ...

  4. ensp 以太网基础与vlan配置实验(基于接口划分和MAC地址划分vlan)

    文章目录 一.题目分析 二.实验步骤 1.在sw1上创建vlan,基于接口划分vlan 2.在sw2上创建vlan,基于接口划分vlan 3.配置接口地址 4.在sw3/4上创建vlan,基于接口划分 ...

  5. 华为交换机CE6800系列基于接口划分vlan配置

    1.基础知识 在交换机中vlan的划分方式有很多,基于接口,基于MAC地址,基于子网,基于协议,这里演示一种最简单也是最常用方便的方法,基于接口划分vlan. 在华为交换机中有几种比较常见的接口类型, ...

  6. spring声明式事务管理方式( 基于tx和aop名字空间的xml配置+@Transactional注解)

    1. 声明式事务管理分类 声明式事务管理也有两种常用的方式, 一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解. 显然基于注解的方式更简单易用,更清爽. ...

  7. 分布式面试 - 如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?

    分布式面试 - 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试题 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如 ...

  8. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-基于接口驱动的数据层...

    系列回顾 在前面的文章中,我用了大量的篇幅对UDA及ORM的使用进行了讲解和演示,我们已经知道并熟悉的使用UDA和ORM构建简单的应用,AgileEAS.NET在应用的纵向结构上建议使用分层结构,提出 ...

  9. 基于.NetCore3.1系列 —— 日志记录之日志配置揭秘

    前言 在项目的开发维护阶段,有时候我们关注的问题不仅仅在于功能的实现,甚至需要关注系统发布上线后遇到的问题能否及时的查找并解决.所以我们需要有一个好的解决方案来及时的定位错误的根源并做出正确及时的修复 ...

最新文章

  1. Apache Ignite剖析
  2. php扩展-ioncube组件的安装方法_Windows系统PHPStudy Web环境安装ionCube扩展软件
  3. python 作用域嵌套_python嵌套作用域问题
  4. linux 总数 进程_linux性能监控之 top 家族(1)
  5. oracle大量数据删除
  6. 面对面交流的好处_我们的交流方式是如何被网络社交媒体一步步改变的
  7. TreeSet()详解
  8. 【CodeForces - 920E】Connected Components? (dsu,补图连通块,STLset+map,bfs 或bitset)
  9. bash:pip:找不到命令
  10. 一些自己使用VS2015的心得
  11. 40亿个手机号码如何去重?
  12. 无线路由器建立usb共享打印服务器,无线路由器USB网络共享管理设置方法
  13. 声音采样率对声音事件分类的简单探究
  14. 红外论文:在不同场景下的距离对红外测温的影响
  15. 智能手环---MQTT协议简介及协议原理
  16. 第十二届蓝桥杯 2021年省赛真题 (Java 大学A组) 第一场
  17. 直播预告| ICML专场四~
  18. iOS: HTTPS 与自签名证书
  19. sql语句实现行转列的3种方法
  20. MoCo v1 论文阅读笔记

热门文章

  1. html 图片不显示
  2. unity物体边缘发光shader_Shaderlab Notizen 15 Rim Shader(边缘发光)的两种实现形态
  3. 螺旋矩阵一个n行n列的螺旅矩阵可由如下方法生成:从矩阵的左上角(第1行第 1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。
  4. Qcon演讲实录 | XQUIC与多路径传输技术Multipath QUIC
  5. 操作系统——操作系统发展历程及基本概念
  6. linux 服务进程管理,进程管理和系统服务-Linux学习笔记
  7. 【BZOJ】【P4407】【于神之怒加强版】【题解】【数论】
  8. 记录第一次纯手打爬虫经历
  9. 适当处理错误(捕获异常)
  10. 【Java基础】Java的继承和多态