根据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
从控制台输出可以看出,过滤器和超时异常之间的间隔仅为10秒。这意味着zuul.host.connect-timeout-millis
不起作用。
答案 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抱怨这是未知属性,但它仍然有效。