通过zuul路由到某个微服务,请求成功,但是响应却总是报500错误,经过调试发现只有在后台处理超过1s的请求会这样,感觉应该是响应超时的问题,但是无论我将zuul.host.socket-timeout-millis或zuul.host.connect-timeout-millis设置多大,问题依然存在。
server:
port: 8080
servlet:
context-path: /
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
status-page-url: http://localhost:8080/swagger-ui.html
zuul:
ignoredServices: '*'
ignoredPatterns: /**/admin/**
host:
max-per-route-connections: 60000
socket-timeout-millis: 60000
connect-timeout-millis: 60000
routes:
docdelivery:
path: /doc-delivery/**
serviceId: doc-delivery
configserver:
path: /config-server/**
serviceId: config-server
查看官网 http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_zuul_timeouts 后发现,对于通过serviceId路由的服务,设置zuul.host是没用的,你需要设置另外两个参数:ribbon.ReadTimeout 和ribbon.SocketTimeout。
在application.yml中添加如下配置:
ribbon:
ReadTimeout: 60000 # 单位毫秒数
SocketTimeout: 60000
问题得到解决。
网友评论