首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hystrix & Ribbon超时警告

Hystrix & Ribbon超时警告
EN

Stack Overflow用户
提问于 2018-05-31 10:55:32
回答 1查看 13.1K关注 0票数 7

环境

  • 弹簧启动1.5.13
  • 弹簧云Edgware.SR3
  • 用Java版本"1.8.0_172-ea“、Java(TM) SE运行时环境(build 1.8.0_172-ea-b03)和源代码级别1.8编译
  • 运行时JRE:与openjdk:10.0.1-jre-slim对接

问题

我有一个名为serviceA的丝带客户端

代码语言:javascript
运行
复制
serviceA.ribbon.ConnectTimeout=5000
serviceA.ribbon.ReadTimeout=15000
hystrix.command.serviceA.execution.isolation.thread.timeoutInMilliseconds = 20000

我没有(故意)在类路径上进行弹簧重试.我执行./mvnw dependency:list | grep -i retry,没有得到任何结果。

在运行时,我会收到以下警告:

命令serviceA的20000ms的Hystrix设置的值低于条带读取和连接超时(400000 is )的组合。

我不知道这些数字是从哪里来的,因为我想把它们分别设为15秒和5秒。为什么这个数字是两倍?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 06:03:22

实际上,丝带超时包括所有相同的服务器重试和下一个服务器重试。

代码语言:javascript
运行
复制
ribbonTimeout = (ribbon.ConnectTimeout + ribbon.ReadTimeout) * (ribbon.MaxAutoRetries + 1) * (ribbon.MaxAutoRetriesNextServer + 1);
// ...
if(hystrixTimeout < ribbonTimeout) {
        LOGGER.warn("The Hystrix timeout of " + hystrixTimeout + "ms for the command " + commandKey +
            " is set lower than the combination of the Ribbon read and connect timeout, " + ribbonTimeout + "ms.");
    }

在您的配置中:

  • ribbon.connectionTimeout是5000
  • ribbon.readTimeout是15000
  • ribbon.maxAutoRetries为0(默认)
  • ribbon.maxAutoRetriesNextServer为1(默认)

因此,hystrixTimeout应该是:

代码语言:javascript
运行
复制
(5000 + 15000) * (1 + 0) * (1 + 1) // -> 40000 ms

如果您选择不配置Hystrix超时,默认的Hystrix超时将是40000ms。

19.13 Spring文档中的Zuul超时

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50622668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档