参考:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_zuul_timeouts
1.Zuul超时配置
下面是Spring官方文档描述:
Snipaste_2018-10-22_13-41-03.png
在配置zuul的超时机制时,可选的两组参数包括:
ribbon.ReadTimeout
ribbon.SocketTimeout
以及
zuul.host.connect-timeout-millis
zuul.host.socket-timeout-millis
两者作用的最大区别是,以服务名(可以是注册中心发现或者自定义serviceId)进行代理的那些服务,它们的超时由ribbon
控制; 对于指定url路由的服务,超时则由zuul.host
设定
2.Hystrix超时熔断设置:
参考Spring官方文档描述:
当设置好
ribbon
的timeout时,Hytrix的熔断时间会有默认值的,由上图所述公式计算得出。一旦单独设置
hystrix.command.xxx.execution.isolation.thread.timeoutInMilliseconds
则会覆盖default
的设定.
- 需要注意的是
execution.isolation.thread.timeoutInMilliseconds
参数的作用情况: 在THREAD模式下,达到超时时间,可以中断;在SEMAPHORE模式下,会等待执行完成后,再去判断是否超时。
因此如果想要按照达到超时即中断的目的,合理的配置如下:
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 6000
# zuul proxy configuration
zuul:
ribbon-isolation-strategy: THREAD
更多关于hystrix
的配置说明参考:https://blog.csdn.net/tongtong_use/article/details/78611225
3.Zuul大文件上传配置
首先需要配置关闭spring自带的multipart配置(因为Spring默认提供的MultipartResolver会将文件缓存到磁盘以及内存中,对于大文件而言,这种服务器缓存是不可接受):
spring:
servlet:
multipart:
enabled: false
然后配置启用Zuul servlet:
zuul:
servletPath: /zuul
如果你的service之前的访问地址是:
- http://{{ServerPath}}/api/tcnbasicsystem/file
那么之后的访问地址就是: - http://{{ServerPath}}/zuul/api/tcnbasicsystem/file
需要注意的是,发送请求时,需要带有请求头:
Transfer-Encoding: chunked
网友评论