SpringCloud服务消费者第一次调用出现超时问题的解决方案
在第一次访问服务消费者的时候(消费者去调用服务提供者服务)会出现如下异常:
com.netflix.hystrix.exception.HystrixRuntimeException: TestService#hello(String) timed-out and no fallback available
解决方案是在application.properties增加如下配置信息:
#hystrix调用方法的超时时间,默认是1000毫秒 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000
更绝的一个方案是直接禁用hystrix:
feign.hystrix.enabled=false
参考文章:http://www.tuicool.com/articles/vAr6Rb2
https://yq.aliyun.com/articles/61510
20190409补充:
服务第一次调用其实设计到多个层面。
1、服务本身:
springmvc servlet的延迟初始化:
#spring mvc的servlet在容器启动后立刻初始化
spring.mvc.servlet.load-on-startup=1
数据库连接池的初始化
2、ribbon的初始化
默认是懒初始化的,这里会耗一些时间,可以在容器启动的时候就去初始化ribbon
ribbon: eager-load: enabled: true clients: client1, client2, client3