使用Tomcat9上传大文件问题求助:10GB+文件上传后变为0KB
解决GeneXus 17 U10大文件上传后变为0KB的问题
针对你上传10GB以上TXT文件后出现0KB空文件的问题,除了调整max-file-size,还需要从以下几个维度排查:
调整服务器端超时配置
GeneXus生成的Web应用依赖底层服务器(IIS/Tomcat等),大文件上传耗时远超默认超时阈值会导致连接中断,文件写入不完整:- IIS:修改站点「连接超时」(建议设为3600秒以上),同时在
web.config中设置ASP.NET请求超时:<system.web> <httpRuntime executionTimeout="36000" maxRequestLength="10485760" /> <!-- 10GB对应10485760KB --> </system.web> - Tomcat:在
server.xml调整connectionTimeout为3600000(1小时),并在web.xml设置session-timeout为60以上。
- IIS:修改站点「连接超时」(建议设为3600秒以上),同时在
启用GeneXus流式上传
默认非流式上传会将整个文件加载到内存,超过内存限制后直接截断为0KB:- 打开Web应用属性,进入「Upload Settings」勾选
Stream uploads; - 处理上传的Procedure中,将
&File变量的Stream属性设为True,确保文件以流的方式写入磁盘。
- 打开Web应用属性,进入「Upload Settings」勾选
检查磁盘空间与权限
- 确认上传目录所在磁盘有至少10GB以上可用空间,磁盘满会导致写入失败生成空文件;
- 验证应用程序池的运行账户拥有上传目录的写入/修改权限,权限不足会中断文件写入流程。
排查中间件限制
若前端到应用服务器之间存在反向代理(如Nginx),需同步调整代理配置:- Nginx中设置
client_max_body_size 15G;(大于目标文件大小),同时延长proxy_connect_timeout、proxy_read_timeout至3600秒以上。
- Nginx中设置
通过日志定位根因
查看GeneXus应用日志(logs目录)、服务器系统日志(IIS事件查看器/Tomcatcatalina.out),日志中会记录上传过程中的内存溢出、超时、权限错误等具体问题,帮助快速定位。
内容的提问来源于stack exchange,提问作者Santiago Adan
相关产品推荐
相关产品推荐

