下载超过1GB的文件失败问题排查及解决
背景:Java应用后台服务有一个文件下载接口,通过页面触发并调用该下载接口进行文件下载。前端通过Ingress做请求转发(背后是Nginx代理),使用Chrome浏览器进行大于1GB文件下载的时候下载到1GB就突然报错 "网络错误"。
排查过程:
1、下载小于1GB的文件正常;
2、不经过Ingress直接进入应用Pod采用命令行的方式调用下载接口下载大于1GB文件正常;
curl -v --location --request GET 'http://localhost:8080/api/file/download?key=xxx.tar.gz' --header 'Cookie: JSESSIONID=F0AB3381A7E8EC600DAE2FF86C0276C3' --output ./xxx.tar.gz
3、经过Ingress采用命令的方式调用下载接口下载大于1GB文件异常;
# -k --insecure 忽略https所需的TLS证书, -http1.1 指定HTTP协议版本
curl -v --location --request GET 'https://${domain}/api/baas/api/file/download?key=xxx.tar.gz' --header 'Cookie: Cookie: JSESSIONID=F0AB3381A7E8EC600DAE2FF86C0276C3' --output ./xxx.tar.gz -k --insecure --http1.1
查看Ingress日志如下:
# 下载开始时
2022/01/13 02:13:10 [warn] 29489#29489: *353766035 an upstream response is buffered to a temporary file /tmp/proxy-temp/0000013203 while reading upstream, client: 182.92.253.8, server: ...# 下载出现异常时
2022/01/13 02:17:27 [error] 29489#29489: *353766035 upstream prematurely closed connection while reading upstream, client: 182.92.253.8, server: ...
综上,可基本定位问题出在Ingress代理。
解决:
经查,Ingress背后的 Ngnix 反向代理对Response默认开启了缓存,而缓冲区的大小跟proxy_buffer_size 和 proxy_buffers 有关。如果缓冲区无法装下所有的响应,则响应内容会写入到缓存文件中,缓存文件的大小上限由 proxy_max_temp_file_size 配置项指定,默认为1G。
因此,最简单的办法就是把 proxy_max_temp_file_size 配置的上限提高至大于要下载的文件大小。而我是基于Ingress 容器化来做的代理,因此需要修改应用Helm Chart下的Ingress对应yaml文件,在Ingress 组件下的metadata -> annotations 下添加如下配置项,重新打包并上传Chart至Harbor仓库更新安装即可。
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: "2048m"
下载超过1GB的文件失败问题排查及解决相关推荐
- 通过Nginx代理下载超过1GB的文件失败
项目场景: 浏览通过Nginx代理请求下载超过1GB文件 问题描述 前几天项目开发时发现,通过 Nginx 代理下载 超过1GB的大文件时,出现"网络错误",而在服务器上下载时却很 ...
- python open找不到文件的原因_浅谈python在提示符下使用open打开文件失败的原因及解决方法...
题目:在提示符下使用open打开一个文件 刚开始网上看了下打开的方式,结果一直实现不了,报错是没找到这个文件,而且和我输入的文件名不一样. 错误如下: >>>open('d:\456 ...
- ci框架中引入css,php ci框架中加载css和js文件失败的原因和解决方法
php ci框架中加载css和js文件失败的原因和解决方法 发布时间:2021-07-01 12:08:38 来源:亿速云 阅读:50 作者:chen 本篇内容介绍了"php ci框架中加载 ...
- php读取4g文件下载,怎么从Linux服务器上下载超过4G的文件
使用sz命令下载文件时,超过4G下载不了,如何下载呢? 本文介绍的方法是先对该文件进行拆分,拆分成多个小于4G的文件,然后分别下载,下载到本地后再进行合并或直接解压,具体操作如下: 1.分拆为多个文件 ...
- 海康Ehome协议接入EasyCVR视频融合平台播放视频失败的排查与解决
EasyCVR视频融合平台的视频能力非常灵活,尤其是在接入协议上,不仅能支持主流的标准协议,如国标GB/T28181.RTSP/Onvif.RTMP等,还可以支持厂家的私有协议,包括海康Ehome.海 ...
- uboot下tftp下载文件失败的排查步骤
1.排查步骤 (1)网线是否已经插上单板并连接正常; (2)可以先把网线插到其他设备上,确认网线是否可以正常工作; (3)确认单板与PC之间是否是网络直连:如果不是网络直连,则要先尝试去ping网关地 ...
- JSP上传文件失败的问题 未解决
服务器操作系统:CentOS 7.3 64位 本机:win10上使用WinSCP远程传输文件,使用putty远程执行命令 已经完成的步骤: Tomcat启动 下图,成功启动 后台 Servlet 编写 ...
- php ci框架中载入css和js文件失败的原因及解决方法
在将html页面整合到ci框架里面的时候,载入css和js失败.原因是ci框架是入口的框架 对框架中文件的全部请求都须要经过index.php处理完毕,当载入外部的css和js文件的时候要使 用bas ...
- ci框架中引入css,php ci框架中载入css和js文件失败的原因及解决方法
大神的Blog挂了,从Bing快照里复制过来的备份 UWidget封装SWidget到UMG 2015年8月30日0 为了使用UMG中的一些高级或便利特性,需要将制作好的Slate控件封装到UWidg ...
最新文章
- 牛年前的一小结——打响本命年的第一枪,继续刷题!
- 20160406作业
- Cobbler部署指南之Cobbler安装操作系统篇
- 基于特征码文件恢复工具magicrescue
- Hi3516A开发--/etc/passwd
- 40+张最全Linux/C/C++思维导图,收藏!
- 计算机四级数据库真题,2015年计算机四级数据库真题
- 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告
- BTC 5分钟内跌幅1.02%,现价38142.29usdt
- 《别做正常的傻瓜》读书笔记
- 如何将网页实现变灰效果?
- 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码
- 题2.pta数据结构题集-File Transfer (25分)
- 如何解决BIOS自动更新,不断循环更新,无法进入系统
- 实时数据库之数据采集
- 微处理器内部结构(寄存器)
- 爬虫大作业-爬取B站弹幕
- offer收割机: 字节跳动、YY、虎牙、BIGO
- 如何使用matlab进行频域分析
- JAVA-@Primary的常用方式