spring-cloud-zuul超时配置不起作用

时间:2018-03-28 03:39:58

标签: spring netflix-zuul

根据spring cloud zuul 8.1.3 zuul timeout,以下配置应该在20秒后使zuul超时,但是,它会在10秒后超时。

server:
  port: 8769
spring:
  application:
    name: service-zuul
zuul:
  host:
    connect-timeout-millis: 20000
    socket-timeout-millis: 60000
zuul:
  routes:
    tp:
      path: /**
      url: http://localhost:9998
ribbon:eureka:enabled: false

stack trace 从控制台输出可以看出,过滤器和超时异常之间的间隔仅为10秒。这意味着zuul.host.connect-timeout-millis不起作用。

3 个答案:

答案 0 :(得分:2)

我终于找到了解决方案:

之前我使用过属性,这是第一次尝试使用yml,似乎必须将一个项目聚合成一个前缀:

zuul:
  host:
    connect-timeout-millis: 20000
    socket-timeout-millis: 60000
  routes:
    tp:
      path: /**
      url: http://localhost:9998

这样后端服务器最多可以响应60秒。此外,我还发现配置中的顺序很重要。

答案 1 :(得分:1)

如果您使用Zuul和Eureka,请尝试定义以下属性。

ribbon:
  ReadTimeout: 60000
  ConnectTimeout: 20000

如果您将Zuul与Eureka一起使用,Zuul将使用RibbonRoutingFilter代替SimpleHostRoutingFilter进行路由。在这种情况下,HTTP请求由Ribbon处理。

答案 2 :(得分:0)

将以下配置添加到Zuul网关以使其正常工作:

hystrix.command.default.execution.timeout.enabled = true

ribbon.ReadTimeout = 5000 ribbon.ConnectTimeout = 5000

#(ribbon.ReadTimeout + ribbon.connectTimeout)*(1 + ribbon.maxAutoRetries(默认0)*(ribbon.MaxAutoRetriesNextServer(默认1)+ 1) #timeoutInMilliseconds =(5000 + 5000)*(1 + 0)*(1 + 1)= 20000

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 21000

注意:尽管IDE抱怨这是未知属性,但它仍然有效。