SpringCloud进阶–Zuul与Ribbon的Timeout配置

文章内索引
[显示]

SpringCloud进阶–Zuul与Ribbon的Timeout配置

  1. Springcloud第一次请求超时

    当通过zuul第一次请求微服务中的服务时,由于也是通过ribbon的http请求去请求原子服务,第一次请求需要加载一些路由基本信息,会报SocketTimeoutException: Read timed out超时错误。

,查看源码AbstractLoadBalancingClient发现可以通过

,设置超时时间,其中ConnectTimeout代表建立stocket连接的超时时间,readtimeout为连接建立后,服务返回值的超时时间。

 

  1. Hystrix小于ribbon超时时间

我的hystrix的超时时间是设置60000,发现会提示

The Hystrix timeout of 60000ms for the command HJ-RiskRule-Edge is set lower than the combination of the Ribbon read and connect timeout, 180000ms.

通过源码发现,原来ribbon中的超时时间算法是,其中maxAutoRetries 是每台服务器最多重试次数,但是首次调用不包括在内,maxAutoRetriesNextServer是最多重试多少台服务器。

ribbonTimeout = (ribbonReadTimeout + ribbonConnectTimeout) * (maxAutoRetries + 1) * (maxAutoRetriesNextServer + 1);

通过以上设置,第一次请求时,已经不会再报超时错误。


©版权声明:本文为【翰林小院】(huhanlin.com)原创文章,转载时请注明出处!

发表评论

电子邮件地址不会被公开。