spring-cloud-zuul超时配置不起作用
spring-cloud-zuul timeout configuration does not work
根据spring cloud zuul 8.1.3 zuul timeout,以下配置应该使 zuul 在 20 秒后超时,然而,它在 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
从控制台输出可以看出过滤器和超时异常之间的间隔只有 10 秒。这意味着 zuul.host.connect-timeout-millis
不起作用。
如果您将 Zuul 与 Eureka 结合使用,请尝试定义以下属性。
ribbon:
ReadTimeout: 60000
ConnectTimeout: 20000
如果您将 Zuul 与 Eureka 一起使用,Zuul 将使用 RibbonRoutingFilter
而不是 SimpleHostRoutingFilter
进行路由。在这种情况下,HTTP 请求由 Ribbon 处理。
我终于找到了解决办法:
之前用过properties,第一次尝试yml,好像一个item必须聚合成一个prefix:
zuul:
host:
connect-timeout-millis: 20000
socket-timeout-millis: 60000
routes:
tp:
path: /**
url: http://localhost:9998
这样后台服务器最多可以有60秒的响应时间。此外,我还发现配置中的顺序很重要。
将以下配置添加到 Zuul 网关以使其工作:
hystrix.command.default.execution.timeout.enabled=真
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 抱怨这是未知的 属性,但它仍然有效。
根据spring cloud zuul 8.1.3 zuul timeout,以下配置应该使 zuul 在 20 秒后超时,然而,它在 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
zuul.host.connect-timeout-millis
不起作用。
如果您将 Zuul 与 Eureka 结合使用,请尝试定义以下属性。
ribbon:
ReadTimeout: 60000
ConnectTimeout: 20000
如果您将 Zuul 与 Eureka 一起使用,Zuul 将使用 RibbonRoutingFilter
而不是 SimpleHostRoutingFilter
进行路由。在这种情况下,HTTP 请求由 Ribbon 处理。
我终于找到了解决办法:
之前用过properties,第一次尝试yml,好像一个item必须聚合成一个prefix:
zuul:
host:
connect-timeout-millis: 20000
socket-timeout-millis: 60000
routes:
tp:
path: /**
url: http://localhost:9998
这样后台服务器最多可以有60秒的响应时间。此外,我还发现配置中的顺序很重要。
将以下配置添加到 Zuul 网关以使其工作:
hystrix.command.default.execution.timeout.enabled=真
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 抱怨这是未知的 属性,但它仍然有效。