原因分析:
nginx代理nginx时,前端用户请求下载文件, nginx代理会先从后端nginx拿到文件并缓存到本地,然后响应给客户端,其中与proxy buffer相关的配置项如下:
proxy_buffer_size 512k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
由此可知, buffer缓冲区最大可以缓冲2.5M的数据,然后就开始刷写磁盘,如果磁盘无法写入,数据丢失。这也是为什么前端下载部分数据,即下载不动的原因。

原因分析:
 1)代理服务器报告:上游过早的关闭连接,好像问题出在被代理服务器;而被代理服务器则抱怨:上游服务器超时。那么一个很合理的推论是:代理服务器很长时间没向被代理服务器请求数据,被代理服务器认为代理服务器已经掉线或完成任务,于是主动断开连接,代理服务器发现需要数据,再连接时,已经连接不上了。
 2)正常的流程应该是:只要客户端一直下载,“客户机->代理服务器->被代理服务器”,这一连串的数据流不会中断,也就不会出现超时。
 3)出现超时只能有一种情况:代理服务器缓存了大文件。
 4)代理服务器接到下载请求,向被代理服务器请求数据,由于两个服务器之间网速快,所以代理服务器请求速度要远大于向客户端发送的速度,这就导致一下正常的代理方式:代理服务器要缓存数据。
 5)但是两个服务器之间的速度实在是太快了,缓存1G数据也就是分分钟的事情,而客户端需要慢慢下载,可能需要十几、甚至几十分钟。代理服务器和被代理服务器这段时间内没有什么事可干,与是两端静默的时间一长,超过了timeout的时间(一般是60s),被代理服务器就认为代理服务器掉线。
解决方案:
1)将代理服务器缓存设置更大,可以直接缓存整个文件,跟上面的解决一样
2)禁用代理服务器缓存:
proxy_pass http://192.168.0.1;
proxy_redirect default;
proxy_buffering off;
3)设置更长的超时时间
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)

原文地址:https://www.cnblogs.com/breezey/p/6740229.html

Nginx下载大文件失败相关推荐

  1. php 7.0 readfile_php readfile下载大文件失败的解决方法

    本文实例讲述了php readfile下载大文件失败的解决方法.分享给大家供大家参考,具体如下: 大文件有200多M,只下载了200K就提示下载完成,且不报错. 原因是PHP内存有限制,需要改为按块下 ...

  2. linux下载大文件失败,Linux下FTP/SFTP传输大文件总是失败的处理办法

    海外服务器,一般延迟都比较高.如果不是China Telecom/China Unicom路由直连,延迟更加的不稳定,甚至长连接会经常闪断.国内跨运营商服务器,没有BGP网关,也同样会发生这样的情况, ...

  3. php readfile 下载大文件失败

    大文件有200多M,只下载了200K就提示下载完成,且不报错. 原因是PHP内存有限制,需要改为按块下载,就是把大文件切块后逐块下载. if (file_exists($file)) {if (FAL ...

  4. php下载效率不高,解决PHP下载大文件失败,并限制下载速度

    1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: ...

  5. scrapy下载大文件失败问题

    利用scrapy下载大量大尺寸图片及视频时有时会报错,显示放弃重试,用户连接时间超过180s导致失去连接 如下 Gave up retrying <GET url> (failed 3 t ...

  6. python断点续传下载_Python 3 爬虫|第12章:并发下载大文件 支持断点续传

    1. stream 流式下载大文件 1.1 stream=True 和 iter_content() 我们将继续使用 Python 3 爬虫|第3章:同步阻塞下载 所搭建的测试环境,在 Nginx 默 ...

  7. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java 1 package com.wangjialin.internet.service.downloader; 2 3 import jav ...

  8. [MAC]Google Drive下载大文件

    在使用Chrome从Google Drive下载8G数据集的过程中,多次出现网络错误问题导致下载失败,特在此记录解决方法. 下载前提:已成功翻墙 一.出错原因: Google Drive下载大文件的时 ...

  9. 统计APP下载量--发现安卓下载大文件使用多线程下载方式

    问题产生 在项目开发过程中,会有各种各样的需求. 而在需求开发过程中,我们常常会遇到从没有见过的问题,这就需要我们一步一步排查. 在一次版本需求中,需要统计不同渠道APP的下载量. 理想很丰满,现实很 ...

最新文章

  1. 程序员缺乏经验的 7 种表现
  2. CentOS 5.6配置PPTP+Radius+Daloradius认证服务器傻瓜教程
  3. Linux-Rsync项目实战(详细) 备份全网服务器数据生产架构方案
  4. linux下tomcat开启远程调试
  5. HashMap 排序
  6. 五一档票房超8.8亿元!张艺谋新片仅第二
  7. 《Java 开发从入门到精通》—— 2.4 Java的运行机制
  8. element-ui 固定弹窗底部的按钮
  9. e4a 悬浮窗和日志框
  10. 一次计算机社团活动方案,社团活动方案设计方案5篇
  11. python画星空的程序_Python画好看的星空图
  12. Java基础教程1-Java特点和手把手教你安装JDK
  13. Vue.js 3 ssr 中报错Hydration node mismatch: - Client vnode: div - Server rendered DOM:已解决
  14. 【Minio】实现视频断点续传功能
  15. 跟益达学Solr5之使用MMSeg4J分词器
  16. v_rep教程----构建纯净模型
  17. 利用Python批量下载自己喜欢听得音乐
  18. 计算机毕业设计Java钢材商贸公司网络购销管理系统(源码+系统+mysql数据库+lW文档)
  19. 腾讯MIG刘成敏告别邮件:两年前就有退休的想法
  20. 微信、QQ等即时通信软件为什么没有取代电子邮件?

热门文章

  1. barManager的设置
  2. 关于GVF的一些理解
  3. 蓝桥杯 历届试题 翻硬币(贪心)
  4. figma 安装插件_figma插件教程6 6
  5. JavaScript大作业 基于HTML+CSS+JavaScript站酷静态页面官网7页
  6. TAPD · 腾讯敏捷产品研发平台基本功能介绍
  7. Python求数组众数
  8. 【CMake】Win10 + CMake + MinGW 简单使用
  9. 泰勒展开式的推导和证明(带皮亚诺余项)
  10. ONLYOFFICE中文的实现方法