Feign客户端消费服务超时:com.netflix.hystrix.exception.HystrixRuntimeException:timed-out and fallback failed.

一. 背景

在微服务项目中,我的服务消费使用的是Feign客户端,在调用服务提供者提供的接口时,报超时异常了,异常如下:

com.netflix.hystrix.exception.HystrixRuntimeException: RemoteCardImgHandleFeign#getVehicleLicenseInfos(CardInfosVi) timed-out and fallback failed.

在这里插入图片描述

二. Feign设置超时时间

1.使用Feign调用接口分两层,ribbon的调用和hystrix的调用,所以ribbon的超时时间和Hystrix的超时时间的结合就是Feign的超时时间
2. 一般情况下 都是 ribbon的超时时间(<)hystrix的超时时间(因为涉及到ribbon的重试机制),如果ribbon 的超时时间大于hystrix的超时时间,对于ribbon的重试是没有意义的(hystrix超时熔断了,ribbon无法重试)
在这里插入图片描述

三. 原因

Hystrix组件缺省超时判断默认为1秒钟,超过1秒就会报超时异常日志,由于我的服务器是在Linux环境,网络延迟非常大,虽然已经把超时设置成了5秒,但是还是短了,可以将超时再设置长一点。

四. 解决方式

hystrix的默认超时1秒直接改成10秒,由于我的测试环境网络延迟很慢,5秒还是不够,直接设置成10秒

  • application.yml
##feign中使用断路器Hystrix,默认是没有开启的,需要开启
feign:
  hystrix:
    enabled: true
#hystrix的超时时间    
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            #设置请求超时时间,默认1秒,超过指定的时间后,触发服务熔断
            timeoutInMilliseconds: 10000
#ribbon的超时时间
ribbon:
  ReadTimeout: 5000 #设置请求处理的超时时间
  ConnectTimeout: 5000  #设置请求链接的超时时间                     

五、在Feign中禁用Hystrix

  • 第一种:禁用Hystrix:

要基于每个客户端禁用Hystrix支持,请创建Feign.Builder具有“原型”范围的香草,这段话摘自官网,例如:
在这里插入图片描述
在这里插入图片描述

import feign.Feign;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

@Configuration
public class FooConfiguration {
    @Bean
    @Scope("prototype")
    public Feign.Builder feignBuilder() {
        return Feign.builder();
    }
}

参考官网资料: https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.2.2.RELEASE/reference/html/#spring-cloud-feign-hystrix

下面两种方式是比较暴力的一种解决方式,但在实际项目中并不推荐,对服务高可用存在一定的影响,两种我没有测试,还是推荐使用上面第一种

  • 第二种: 禁用Hystrix的请求时间超时限制
#hystrix的超时时间    
hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: false
  • 第三种: 禁用feignhystrix
feign:
  hystrix:
    enabled: false
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读