网站首页 > 技术教程 正文
今天接到客户的反馈说访问服务下载大文件不全,用客户提供的链接通过浏览器下载的文件只有1.05个G,原文件有近1.3个G,
使用curl命令在服务器上下载是正常的,文件大小没问题,
相同的测试重复了多次,结果仍然是这样。
通过浏览器访问路径是这样,
浏览器--->公有云负载均衡--->Nginx--->后端Java服务
直接在服务器上访问是这样,
Curl--->Nginx--->后端Java服务
直觉判断是公有云负载均衡导致的,提工单反馈这个问题,平台建议将负载均衡的协议从HTTP改为TCP,但问题还是存在,
抓包结果显示客户端主动断开了连接,有点让人摸不着头脑了,
继续往上溯源,查询Nginx的错误日志发现下面内容:
2024/07/16 12:02:31 [error] 20256#20256: *284535721 upstream prematurely closed connection while reading upstream, client: x.x.x.x, server: xxx.com"
说明后端Java服务在没有完成文件传输的情况下,主动断开了与Nginx的连接,为什么会这样?
原来Nginx默认有一个缓存(针对单个连接),因为占用内存,默认空间很小,只有几十KB。缓存的大小由“proxy_buffer_size”和“proxy_buffers”这两个参数控制,
这个缓存用来存放从上游服务器接收到的数据,如果收到的数据将缓存填满,Nginx会将收到的数据存放在硬盘中的一个临时文件,文件最大大小由参数“proxy_max_temp_file_size”控制,默认是1G,这个文件也填满后,Nginx将不去请求上游服务器,Nginx与上游的连接默认保持60s,超时后连接会断开。
明白这个原理后,我们禁用掉缓存,这样Nginx从上游服务器收到的数据将不在本地缓存,收到上游返回的数据后将立即发送给客户,整条下载路径的速度完全由客户端控制,这样就可以解决这个问题。
禁用掉缓存,
在Nginx配置文件中,增加指令"proxy_buffering off;",问题完美解决。
猜你喜欢
- 2024-10-09 程序员都应该懂的微服务容错与隔离:熔断保护、超时与重试原理
- 2024-10-09 Nginx为什么快到根本停不下来?(nginx解决什么问题)
- 2024-10-09 Nginx代理webSocket经常中断的解决方案,如何保持长连接
- 2024-09-09 怎么测试nginx反向代理(nginx反向代理配置参数)
- 2024-09-09 关于LNMP+Frp内网穿透环境下一个PHP程序运行超时的问题
- 2024-09-09 Nginx反向代理(nginx是干嘛用的)
- 2024-09-09 Nginx这么香,还不知道怎么学?看完这份Nginx笔记你能立马上手
- 2024-09-09 「每天一道面试题」Nginx 502错误原因和解决方法
- 2024-09-09 年轻人你不讲武德,Nginx之负载均衡演示
- 2024-09-09 应用程序加固Nginx篇(如何给应用加固)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)