feign服务期间调用超时解决办法

今天偶然发现项目中的一个定时任务会出现服务调用超时的情况(由于是虚拟机开发环境,cpu效率比较低,调用执行时长超过1s),开始以为是feign的懒加载造成的,然后配置了饥饿加载的方式:6.9 Caching of Ribbon Configuration

feign.RetryableException: Read timed out executing POST http:****

在yml配置文件中添加:

ribbon:
  eager-load:
    enabled: true
    clients: client1, client2, client3 # 服务提供的serviceName
feign:
  client:
    config:
      default:
        connectTimeout: 3000 #单位毫秒
        readTimeout: 12000 #单位毫秒    

结果发现熔断超时了,然后又配置了hystrix:

hystrix:
  command:
    default:
      execution:
        timeout: 
          enabled: true #是否开启熔断超时
        isolation:
          thread:
            timeoutInMilliseconds: 10000 #单位毫秒

添加完以上配置超时问题解决。具体参数请根据自身业务情况配置…
附加其他超时配置,请自行调试:

# 设置ribbon超时时间
ribbon:
  ReadTimeout: 5000
  ConnectTimeout: 2000

注:feign的超时时长应根据Ribbon的超时时间和Hystrix的超时时间配置,即可理解为:
feign timeout = Ribbon timeout + Hystrix timeout

你可能感兴趣的:(springcloud)