上传文件通过ZUUL网关路由有问题,小几十KB的文件OK,大文件不OK

问题简述:
上传文件通过ZUUL网关路由有问题,小几十KB的文件OK,大文件不OK
 
测试用例:
管理平台 正常做上传,上传300MB 文件,测试OK
请求通过一层ZUUL 路由,上传300MB文件 得不到 任何响应,测试 小文件(如50kb),OK的
 
问题背景:
上传文件的web应用,Server端是Struts2,前端是Ajax。
web应用运行环境,docker的tomcat镜像。
zuul网关应用,springboot,docker的java镜像。
 
问题分析和尝试解决:
首先,由于web应用直接 测试是OK的,排除web 应用本身的问题。
其次,搜索了一些“zuul 文件大小限制”相关 配置,配在网关应用处,好像也没有生效:



spring: 
    http: 
        multipart: 
            max-file-size: 10Mb 
            max-request-size: 10Mb
 


zuul文件大小限制的配置参考:zuul文件大小限制
 
更多信息:
目前很尴尬的是没有任何异常日志,现象就是页面上传卡一会儿 ,然后就没有然后了,上传也没完成。
不知道网关处是否有其他特殊配置  
 
目前还没有解决,请大家帮忙看看,谢谢
已邀请:

bruceouyang - http://bruce.bugmakers.club

赞同来自: 程序猿DD kasuo405 g29tony

## 自己再来回复一下
 
前两天买了两本书:didi老大的《SpringCloud微服务实战》和周立老大的《SpringCloud和Docker微服务架构实战》,刚到。
 
在周老大的书里边有介绍zuul上传文件的具体说明


8.7 使用Zuul上传文件


 
这里简述一下规则:
1.通过网关上传小于1MB的文件,无须任何处理,即可正常上传;
 
2.大文件,需要在上传路径之前添加/zuul,或者使用zuul.servlet-path自定义前缀。
例如:
//zuul-config
zuul.routes.ms-fileupload = /ms-fileupload/**

//fileupload request path

//for small-file-upload
http://gateway-server/ms-fileupload/upload

//for large-file-upload
http://gateway-server:port/zuu ... pload

 
3.如果zuul使用了Ribbon做负载均衡,对于大文件上传,需要提升超时设置
例如:
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
ribbon:
ConnectionTimeout: 3000
ReadTimeout: 6000

4.在上传文件的微服务的配置application.yml里边也有文件大小的配置要修改
例如:
spring:
http:
multipart:
max-file-size: 2000Mb # Max file size, default 1MB
max-request-size: 2500Mb # Max request size, default 10MB

 

bruceouyang - http://bruce.bugmakers.club

赞同来自: xiaobaxi g29tony

再提供一个解决方案,那就是用文件分片上传,每片大小控制下zuul了支持的最大值范围内。
这个我已经验证过了,是可行的。
回头我会把 我这边测试用的分片上传的代码共享 出来。

monkey

赞同来自: bruceouyang

在上传的路径前加入/zuul试了吗?

程序猿DD - http://blog.didispace.com

赞同来自:

这问题描述太规整了!必须手工点个赞!!
 
这两个参数怎么配的,默认情况下大文件,应该都会超时熔断。
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
ribbon.ReadTimeout

网关里有什么异常信息吗?

bruceouyang - http://bruce.bugmakers.club

赞同来自:

hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
thread:
timeoutInMilliseconds: 10000

ribbon:
ReadTimeout: 10000
ConnectTimeout: 10000
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 1

zuul:
max:
host:
connections: 1000
host:
socket-timeout-millis: 10000
connect-timeout-millis: 10000

要回复问题请先登录注册