com.netflix.zuul.exception.ZuulException:Hystrix 读取超时

Posted

技术标签:

【中文标题】com.netflix.zuul.exception.ZuulException:Hystrix 读取超时【英文标题】:com.netflix.zuul.exception.ZuulException: Hystrix Readed time out 【发布时间】:2019-08-20 10:45:42 【问题描述】:

我正在使用 eureka 和 zuul 尝试微服务。所有请求都存在问题,需要超过 1 秒。据我了解,1 秒是默认的 hystrix 超时,为了在 Zuul 中配置超时,我必须配置这些属性:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds ribbon.ConnectTimeout ribbon.ReadTimeout

但是当我设置它们时,Intelije Idea 中的每一个都有“无法解析配置属性...”警告。而且,它们似乎没有被应用并且不起作用。

【问题讨论】:

【参考方案1】:

在zuul服务器中设置ribbon readTime应该可以解决这个问题。

ribbon:
  ReadTimeout: 60000

注意:ReadTimeout 区分大小写。

【讨论】:

这解决了问题。谢谢【参考方案2】:

在Zuul网关服务中添加如下属性

hystrix:  命令:    默认值:     执行:       隔离:          线程:             timeoutInMilliseconds:30000

功能区: ReadTimeout:60000  连接超时:3000  eureka:   启用:true

zuul: ignoredServices:'*'  主机:   生存时间:-1    connect-timeout-millis:5000     max-per-route - 互联:10000 最大总连接:5000 Socket-Timeout-Millis:60000 信号量:最大信号量:500

【讨论】:

谢谢!为什么 Netflix 使用两种表示法——ReadTimeout 和 connection-timeout?【参考方案3】:

答案已编辑

这样你会增加 Hystrix 超时时间(全局):

hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000

或每个服务:

hystrix:
  command:
    <serviceName>:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 5000

【讨论】:

不幸的是,它不起作用。在“hystrix”之后可用的属性只有:“metrics”和“shareSecurityContext”。没有“命令”属性 已编辑,立即尝试@Vados 如果我将 timeoutInMilliseconds 增加到 10000,我会在 3 秒事件后收到网关超时

以上是关于com.netflix.zuul.exception.ZuulException:Hystrix 读取超时的主要内容,如果未能解决你的问题,请参考以下文章