SpringBoot项目第一次Feign调用失败问题总结

Demo项目采用Spring Cloud 微服务架构,各个SpringBoot项目通过Fegin进行相互调用,但是在使用过程中发现,第一次通过Feign调用其它服务时,总会走到熔断器进行熔断。定位发现Hystrix 熔断器的请求默认超时时间是1s。而第一次调用时会进行初始化ribbon相关组件,超过了1s,导致等待结果超时,就熔断了。

找了很多博客,很多给出的答案都是加大超时时间,比如给5s或者更长,我觉得这个是不正确的。虽然解决了这个问题,但是会有隐患:当这个接口并发大的时候,如果超时时间比较长,则会很快消耗完连接池的连。

更优雅的解决方式:

1. 开启ribbon 的饥饿初始化,即服务启动时就初始化ribbon和feign相关组件
ribbon:
  eager-load:
    enabled: true   #开启饥饿加载 解决第一次feign调用失败的问题
    clients: commodity-center              #需要饥饿加载的服务名称
2. 开启DispatchServlet默认初始化
spring:
  mvc:
    servlet:
      load-on-startup: 0   # 启动时立即初始化 dispatcherServlet,数值表示延迟多久进行自动初始化dispatcherServlet,0是立即初始化

配置后项目启动日志:


日志截图

然后再进行第一次Feign请求,问题已解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 好姻缘基于彼此的过往经历、未来憧憬和现实把握。婚姻不会只是两个人过日子,也不仅仅是两个家庭的结合,更是两个...
    一木一火阅读 504评论 0 3
  • 孩子在英语班学的儿歌, 边读英语边做动作,非常有意思,记录下来,给二胎留着用。 One finger one fi...
    静_c296阅读 750评论 0 0
  • 第一次去北京,其中的欢欣与激动不言于耳,然而在真正去了北京,才发现北京的环境,建筑以及人文其实都与我经常去的西安是...
    塞飞夜阅读 264评论 0 2
  • 愿你像春天里的阳光 明媚 灿烂 温暖 愿你像春天里的桃花 美丽 动人 芳香 愿你像春天里的小鸟 欢快 活泼 歌唱 ...
    笑傲江湖之秋雨阅读 141评论 0 2
  • 血性难为,但请别放弃希望 也许是太久没有看适合成人的电影,也许是已经知道了剧情,因而从开头到结尾,一个多小时,《嘉...
    正好闲聊阅读 365评论 0 2