nginx-排查一次大文件无法正常下载问题

目录

问题现象&报错信息

问题现象以及分析

nginx报错信息

问题解决

方法1:配置proxy_max_temp_file_size

方法2:关闭proxy_buffering

参考文档


问题现象&报错信息

问题现象以及分析

  • 文件正常从后端服务器直接下载时,一切正常。但是通过nginx反代后,使用wget命令下载到1GB时,wget会重试一次(重新开始下载),然后重试后立即失败。--判断1.nginx可能有1GB缓存之类的限制
  • 在网络带宽情况较好的内网直接下载,不会出现问题;当下载速度受限,需要较长时间下载时,问题必现(下载到1GB中断)。--判断2.此问题与网络传输速度也有关联
  • 对比测试时,使用另一套文件下载服务,使用同样的nginx作为反代。另一套文件下载服务下载10GB文件未复现问题。--判断3.后端服务传输方式也存在问题

#wget限制下载速度10MB/s,模拟网络带宽受限,复现问题。

wget --limit-rate=10M

nginx报错信息

2024/02/27 17:08:49 [error] 2297567#0: *5206 upstream prematurely closed connection while reading upstream, client: 10.1.1.1, server: file.example.com, request: "GET /file/test/test.zip HTTP/1.1", upstream: "http://10.10.10.10:80/file/test/test.zip", host: "file.example.com"

关键信息:upstream prematurely closed connection while reading upstream

读取上有服务器时,上游服务器过早关闭了连接。

  1. 可能上有服务器存在问题,过早关闭了连接。
  2. 可能上有服务器由于内网网络环境较好,很快地传输完了数据,与nginx断开了连接。(与判断2一致)

问题解决

方法1:配置proxy_max_temp_file_size

参考连接:ngx_http_proxy_module - proxy_max_temp_file_size

当启用来自代理服务器地响应缓冲时(proxy_buffering on;),可以将部分响应保存至缓冲区中。该指令设置临时文件的最大值,默认值1024MB。

proxy_max_temp_file_size 2048m;

将此值设置为2GB或者更高,问题解决。

方法2:关闭proxy_buffering

参考连接:ngx_http_proxy_module - proxy_buffering

当proxy_buffering设置为on时,启动缓冲。nginx会尽快从代理服务器接收响应,并将其保存到 proxy_buffer_size和proxy_buffers指令设置的缓冲区中。

如果整个响应无法放入内存,则可以将其中一部分保存到磁盘上的临时文件中。写入临时文件由 proxy_max_temp_file_size和 proxy_temp_file_write_size指令控制。

当禁用缓冲时,响应将在收到后立即同步传递到客户端。nginx 不会尝试从代理服务器读取整个响应。nginx一次可以从服务器接收的数据的最大大小由proxy_buffer_size指令设置。

proxy_buffering off;

关闭后nginx不会尽快接收服务器响应,从而上有服务器不会过早关闭连接。

参考文档

Module ngx_http_proxy_module

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hive常见时间函数

1.时间戳和日期相互转换函数 具体执行结果在后面备注标注出来。主要为时间戳转换为日期函数,和将日期转换为时间戳函数 -- 1.时间戳转化为日期函数 -- from_unixtime(bigint unixtime[, string format]) 其中第一个参数必须为bigint类型 select from_unixtime(166…

通过esp32cam拍摄图片上传至PC并通过YOLO进行目标检测

通过esp32cam拍摄图片上传至PC并通过YOLO进行目标检测 一.通过esp32cam拍摄照片并上传至PC二.训练自己的数据集三.AutoDL AI算力云的使用1.账号注册2.GPU选取3.GPU使用4.开机训练 四.数据集的使用 一.通过esp32cam拍摄照片并上传至PC 文章链接: https://blog.csdn.net/qq_6297…

北京市气象站点日值数据(降雨气温风速日照蒸发气压地温湿度)

气象数据一直是一个价值较高的数据,它被广泛用于各个领域的研究当中。气象数据包括有气温、气压、相对湿度、降水、蒸发、风向风速、日照等多种指标,但是包含了这些全部指标的气象数据却较难获取,即使获取到了也不能随意分享。 北京&#xf…

学习JavaEE日子 Day24 TreeSet,内置比较器,外置比较器,HashMap

Day24 TreeSet 1.TreeSet 1.1 TreeSet的使用 注意&#xff1a;TreeSet的使用和HashSet一样 public class Test01 {public static void main(String[] args) {//创建TreeSet集合的对象TreeSet<String> set new TreeSet<>();//添加元素set.add("麻生希"…

机器学习-可解释性机器学习:随机森林与fastshap的可视化模型解析

一、引言 机器学习在当今社会扮演着日益重要的角色&#xff0c;但黑盒模型的不可解释性限制了其应用范围。因此&#xff0c;可解释性机器学习成为研究热点&#xff0c;有助于提高模型的可信度和可接受性。本文旨在探讨随机森林和fastshap作为可视化模型解析工具的应用&#xff…

【生态适配】亚信安慧AntDB数据库与OpenCloudOS、TencentOS Server五款产品完成兼容互认

日前&#xff0c;亚信安慧AntDB数据库与OpenCloudOS8、OpenCloudOS9、TencentOS Server 2、TencentOS Server 3、TencentOS Server 4五款操作系统完成兼容互认。经过严格测试&#xff0c;亚信安慧AntDB数据库与这五款操作系统兼容良好&#xff0c;整体运行稳定。 图1&#xff1…

在Anaconda3的conda中创建虚拟环境下载opencv

opencv下载全流程 一、下载Anaconda 记得从官方网格站进行下载&#xff0c;会有一些慢 下载后进行配置 b站讲解视频&#xff08;非本人&#xff08;平台大神讲解&#xff09;&#xff09; 二、打开conda控制台 这里的两个都可以进行下载 通常我们受用anaconda prompt 三、…

Git基于master创建新分支

在工作中&#xff0c;当有一个新需求的时候&#xff0c;需要基于master进行开发&#xff0c;就需要新建分支&#xff0c;并建立本地和远程分支的关联。 1、先切换到master 分支 git checkout master 2、然后将远程master 分支最新代码拉取到本地master分支 git pull 3、然…

【DevOps基础篇】Docker进阶高级技巧使用

【DevOps基础篇】Docker进阶高级技巧使用 目录 【DevOps基础篇】Docker进阶高级技巧使用清理垃圾删除悬空卷删除已退出的容器删除悬空镜像自动删除交互式容器检查Docker资源美观的JSON和jq处理显示整个Docker信息仅显示插件列出连接到‘bridge’网络的所有容器的IP地址监视容器…

数字人ai直播软件突破AI大模型技术,改变未来科技格局!

数字人AI直播软件在AI大模型技术上的突破&#xff0c;将不可避免地改变未来科技格局。这一突破让人们看到了AI技术的无限可能性&#xff0c;并为未来的科技发展打开了新的大门。 AI大模型技术是近年来人工智能领域的一个热点&#xff0c;它通过构建庞大、复杂的神经网络模型&a…

【AI视野·今日NLP 自然语言处理论文速览 第八十四期】Thu, 7 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 7 Mar 2024 Totally 52 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers The Heuristic Core: Understanding Subnetwork Generalization in Pretrained Language Models Authors Adith…

Linux如何分割大文件

使用split命令 split -b 200M test.txt ## -b参数指定文件大小&#xff0c;可以是K、M、G、T等 参考&#xff1a;linux系统中split命令

java设计模式之——单例模式

一&#xff1a;什么是单例模式&#xff1f; 构造函数private之后&#xff0c;还需要提供一个方法&#xff0c;要保证只能初始化一个单例对象&#xff0c;并且需要考虑线程安全的问题。 二&#xff1a;单例模式多种写法&#xff1f; 具体到写法上&#xff0c;主要有5种&#…

PostgreSQL容器安装

docker中的centos7中安装 选择对应的版本然后在容器中的centos7中执行下面命令 但是启动容器的时候需要注意 开启端口映射开启特权模式启动init进程 docker run -itd --name centos-postgresql -p 5433:5432 --privilegedtrue centos:centos7 /usr/sbin/init 启动然后进入后先…

UML统一建模语言在软件开发中作用

目录 一、UML助力软件开发的三大核心要素 二、UML在软件开发中的实际应用优势 三、总结与展望 UML&#xff0c;即统一建模语言&#xff0c;在软件开发过程中扮演着举足轻重的角色。它以其直观性、规范性和通用性&#xff0c;为软件项目的成功实施提供了有力的保障。本文将深…

vb.net的treeview点击节点折叠其它分支

vb的treeview控件如何实现点击任意节点&#xff0c;只保留从根目录到当前选择的节点都打开&#xff0c;其他节点关闭&#xff1f; 我的思路是先折叠所有节点&#xff0c;然后循环找点击节点的父节点&#xff0c;一个个展开它们。 Private Sub TreeView1_AfterSelect(sender A…

JAVA实战开源项目:生活废品回收系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案&#xff0c;旨在鼓…

CQBW(服务器部分)

计算检材 4-A.rar 的 MD5(128bit)校验值。&#xff08;答案格式: 字母大写&#xff09; 请写出镜像中系统&#xff08;用户名: root 密码: btLUN5Tb)的操作系统版本名称;&#xff08;答案格式: redhat; 小写、不带空格、特殊字符及版本号&#xff09; 也可以仿真来看 sed -i s…

HarmonyOS 数据持久化 关系型数据库之 初始化操作

上文 HarmonyOS 数据持久化之首选项 preferences 我们有说用户首选项 但它只能处理一些比较简单的数据类型结构 的持久化处理 如果是一些批量较大 结构较为复杂的数据结构 那么 首选项就无法满足了 我们就要选择 关系型数据库 通过 SQLite 组件实现的一种本地数据库&#xff0…

10 事务控制

文章目录 事务控制事务概述事务操作事务四大特性事务隔离级别 事务控制 事务概述 MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c;你删除一个人员&#xff0c;既需要删除人员的基本资料&#xff0c;也要删除和该…