栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

nginx1.20.1+springboot2(tomcat) 下载大文件抛ClientAbortException: java.net.SocketTimeoutException

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nginx1.20.1+springboot2(tomcat) 下载大文件抛ClientAbortException: java.net.SocketTimeoutException

问题描述:前后端分离项目,nginx用于分发请求,后端sprinboot2(tomcat)提供下载功能。通                      过前端请求下载大文件(超过1.5G)。内网测试正常。通过外网请求时

 

 分析:nginx 已设置   读取、发送超时间,

        proxy_send_timeout 1800s;
        proxy_read_timeout 1800s;

  1. 分析错误日志发现,从请求开始到抛出异常时间在5分钟以内;且直接通过springboots后端下载时间超过15分钟也没报错。因此可排由于服务器超时时间设置的问题。
  2. 从内网测试,浏览器的下载文件速率达到4M;而外网测试下载文件速率只有1.2M.因此可能的原因在于nginx的配置上;
  3. 查看nginx的配置文档,及参考网上资料可知:
  4.    nginx默认开启缓存,proxy_max_temp_file_size 默认为1024M。由于nginx与tomcat同处于内网,下载速率比较快,而浏览器从nginx下载时是先读取nginx的缓存,且由于外网带宽限制,无法及时读取缓存,nginx的临时硬盘文件缓存超过了1024M。

解决方法:

  1. 压缩需要下载的文件大小; 
  2.  修改proxy_max_temp_file_size配置,设置为0,表示关闭硬盘缓冲;或是根据实际下载文件大小调整此参数的大小

参考:Nginx下载大文件失败,java.net.sockettimeoutexception_南有乔木的博客-CSDN博客

        Module ngx_http_proxy_module

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号