Spring Cloud内部使用@FeignClient调用频繁超时

在使用@FeignClient调用微服务接口时由于被调用接口响应时间超过,这时候要查看日志,查看从调用到超时是多长时间,如果日志不全,可以结合Spring cloud引入的依赖判断默认超时时间:

1. Feign没有引入(Ribbon / Hystrix):

  • 连接超时:10 秒;
  • 读取超时:60秒。
  • 以上默认时间可以手动配置更改:
    	public Options() {
    	    this(10_000, TimeUnit.MILLISECONDS, 60_000, TimeUnit.MILLISECONDS, true);
    	}
    

2. Feign集成了(Ribbon):

  • Ribbon会覆盖Feign的默认超时时间:
    • 连接超时:1秒;
    • 读取超时:1秒。
    • 可以通过更改Ribbon配置调整超时时间:
      ribbon:
       ConnectTimeout: 1000 
       ReadTimeout: 1000
      

3. Feign集成了(Hytrix):

  • Hytrix也有默认超时时间:
    • 命令执行超时:1秒。
    • 可以通过配置更改Hytrix配置调整超时时间:
      hystrix:
        command:
          default:
            execution:
              isolation:
                thread:
                  timeoutInMilliseconds: 1000  # 默认1秒
      

配置优先级:

Ribbon > Fegin > Hytrix(Hytrix超时需大于 Ribbon 总超时,否则会提前熔断)

比较省力的配置方式:

  • 直接对fegin进行配置:
    feign:
      client:
        config:
          default:  # 全局默认配置
            connect-timeout: 5000  # 连接超时(覆盖 Ribbon.ConnectTimeout)
            read-timeout: 10000     # 读取超时(覆盖 Ribbon.ReadTimeout)
          user-service:  # 针对特定服务的配置(优先级高于 default)
            connect-timeout: 3000
            read-timeout: 8000
    
  • 以上配置中connect-timeout对应Ribbon配置中的ConnectTimeout;
  • 以上配置中read-timeout对应Ribbon配置中的ReadTimeout
  • 会以Feign的配置为准,Ribbon的配置会响应的被覆盖,
  • 配置优先级:

    特定服务配置(如 user-service) > 全局默认配置(default) > Feign/Ribbon 的默认值(通常为 1 秒左右)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值