这种情况可以分为两种情况
一.被调用方的问题
1.被调用方代码效率的问题,有可能接口真的超时了
2.被调用方启动时没有默认启动DispatcherServlet,没有调用Servlet的init方法,所以第一次请求过来时会消耗1秒左右的时间,如果这时调用方启动了默认的断路器时间(默认1秒),这时就很容易出现超时的情况,但是后面再次调用就不会有这种情况了。
解决方案,修改DispatcherServlet的初始化时间,spring.mvc.servlet.load-on-startup默认为-1,设置为0或正整数即可
spring.mvc.servlet.load-on-startup=1
二.调用方的问题
调用方调用其他服务的时候可能还没有加载client,在首次调用时会消耗一定的时间,可以通过下面配置来在启动时初始化这个配置
解决方案,添加配置
# 饥饿加载,避免刚启动第一次请求超时
ribbon.eager-load.enabled=true
# 初始化的client列表
ribbon.eager-load.clients=aaa
另外还需要添加一下短路器的超时时间
#断路器超时时间,默认1000ms
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000
网友评论