2019独角兽企业重金招聘Python工程师标准>>>

在使用Squid做反向代理的CDN节点时.多线程大文件断点续传和流媒体的处理是怎么样啦.前些日子花了点时间研究了一下.

在Squid做反向代理时.其中有个range_offset_limit的参数,意思是预先读取.还有一个maximum_object_size的参数控制能缓存的大小.

当了解上面二个参数的意思,我们来讲讲实际中会怎么样.当maximum_object_size设置成100M,也就是最大能缓存的大小.另外range_offset_limit最大预先读取我们也先让他也为100M.当有个用户,比如使用迅雷下载squid中一个100M的文件时.照理他是缓存这个100M,然后其它的用户都是下载的缓存的.理想状态就是这样.

但是事实不是这样处理的,这个和用户和请求数有关,当用户开启了多线程,比如并发10个线程从这个节点下载.预先读取的参数会同时10个并发来缓存,那这样,每个10个进程,在第一次,一个100M的文件有可能下载到squid节点中100M*10(并发)=1000M,直到其中最快的一个并发都预先读取完了所有的要下载的那个文件.才会给文件缓存起来.这样之后的用户才会从缓存中得到文件.但这样下载的量非常大.很多没有必要的.这样也就是我们为什么就从Cacti中常常见到很奇怪的流量.

为了防备squid被多线程下载工具冲击,让squid用acl来禁止http header中带range请求.客户端的表现就是采用多线程下载的请求都会被squid拒绝,也就是多线程下载工具无法下载通过你的squid代理的站点上的东西了.

当然,也可以做业务拆分,让单个squid来缓冲这些大文件,和有可能出现多并发的文件.然后给内容最好主动推到CDN的节点上面.

近来在研究大文件Cache方面,squid对大文件处理方面的优化.其中发现二个最重要的参数range_offset_limit和quick_abort*.其实从名字中就能看得出来,二个最主要的分别就是一个是对大文件的range(断点续传)和abort(中断)的处理.


1. squid 中的 range_offset_limit

其实在前面几次提到过这个参数,也会有很多问题,一定要注意就是这个设置的比你的maximum_object_size要小.不然下载完,又放弃.

另外这个参数也会有个问题,就是当十个线程过来,它会同一个文件请求10次,不过总的来讲,这个参数少设置为好.

2.squid 中的 quick_abort

quick_abort_min (KB)
quick_abort_max (KB)
quick_abort_pct (percent)

控制squid是否继续传输被用户中断的请求.当用户中断请求时,squid把检测 quick_abort 的值.如果剩余部分小于“quick_abort_min”指定的值,squid 把继续完成剩余部分的传输;如果剩余部分大于“quick_abort_max”指定的值,squid 把终止剩余部分的传输;如果已完成“quick_abort_pct”指定的百分比,squid把继续完成剩余部分的传输.

比如我们对大量的大文件的cache系统可以这样处理
quick_abort_min 16 MB
quick_abort_max 16 MB
quick_abort_pct 80

3. squid 中的 collapsed_forwarding

多个回源流量变成一个回源,这个在大文件时,也比较有用,但是如果第一个用户很慢的话,会严重影响速度.

range_offset_limit 0
quick_abort_min 4 MB
quick_abort_max 4 MB
quick_abort_pct 90

转载于:https://my.oschina.net/yonghan/blog/630730

多线程大文件断点续传和流媒体的处理方法相关推荐

  1. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载

    前言:iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载是在前篇iOS开发之网络编程--使用NSURLConnection实现大文件下载的基础上进行    断点续传的设置 ...

  2. 精品分享:基于 SpringBoot + Vue 开发的云盘系统(含大文件断点续传剖析)

    引言 作为开发人员,我们经常需要存储和下载文件,为了使用方便,通常都会将文件存储在云端,市面上使用率最高的云端存储莫过于百度网盘了,但使用别人的东西难免会受到各种各样的限制,必须花钱才会享受到更好的服 ...

  3. 文件上传控件-如何上传文件-大文件断点续传

    需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制. PC端全平台支持,要求支持Window ...

  4. html5解决大文件断点续传6,解决html5大文件断点续传

    一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content- ...

  5. 【vue】 前端 基于 vue-simple-uploader 实现大文件断点续传和分片上传

    文章目录 一.前言 二.后端部分 新建Maven 项目 后端 pom.xml 配置文件 application.yml HttpStatus.java AjaxResult.java CommonCo ...

  6. c#如何上传大文件到服务器,asp.net(C#)中上传大文件的几中常见应用方法

    asp.net(C#)中上传大文件的几中常见应用方法 更新时间:2008年11月25日 10:05:46   作者: 最近博客需要做一个文件上下载功能,我从网上找了点资料,整理了下希望对大家有帮助! ...

  7. 基于elementui的大文件断点续传

    一.前端大文件上传文件的痛点 1.文件过大会导致带宽资源紧张,请求速度下降 : 2.如果上传过程中服务中断.网络中断 .页面崩溃,可能会导致文件重新开始上传. 二.痛点的分析 前端选择文件后上传,后端 ...

  8. 类似迅雷下载实现大文件断点续传

    不论是网页开发还是客户端程序开发,都有可能遇到文件下载的实现,最简单的办法好像是说使用WebClient.DownLoadFile()实现,但是如果遇到大文件需要做到断点续传,怎么办?我们看看做到断点 ...

  9. 前后端配合实现大文件断点续传(前端逻辑)

    断点续传作用:当上传文件时,大文件上传时耗时过长,如果遇到网络卡顿.断网等情况,再重新开始上传的体验感非常不好.前端优化分片上传文件,上传时把大文件分成很多个小文件,等到网络状况恢复了之后,即从之前上 ...

最新文章

  1. 项目构建之maven篇:2.HelloWorld项目构建过程
  2. 使用 python 的单人AI 扫雷游戏
  3. 预训练模型参数量越来越大?这里有你需要的BERT推理加速技术指南
  4. STL算法学习[转]
  5. TextSwitcher--文本切换器
  6. 在word 2010中采用EndNote X7插入引用
  7. Python中的yield详解
  8. 北斗导航 | RTCM 3.3学习(10403.3)
  9. 如何将qrc文件添加至VS
  10. 施耐德编程软件Unity Pro XL授权步骤
  11. c语言switch excepted,C语言问题 expected unqualified-id
  12. java处理环比增长率
  13. iOS应用内购基本步骤及问题
  14. Spring Validation 验证框架全面总结
  15. oracle数据库interval使用,Oracle Interval类型
  16. hiveql 没有left()right()函数,可用substr()替代
  17. docx.opc.exceptions.PackageNotFoundError: Package not found at
  18. ios7新特性--4
  19. idea git回退到某个历史版本
  20. 基于PCL 1.11 的屏幕选点

热门文章

  1. 导入表编程-枚举导入表
  2. UVA10763交换学生
  3. hdu4122 制作月饼完成订单的最小花费
  4. 操作系统原理第十一章:大容量存储
  5. 【Groovy】map 集合 ( map 集合定义 | 通过 getClass 函数获取 map 集合的类型 | 代码示例 )
  6. 【BLE MIDI】MIDI 文件格式分析 ( FF 03 轨道名称 | FF 51 03 四分音符时长 )
  7. 【Android 插件化】Hook 插件化框架 ( 创建插件应用 | 拷贝插件 APK | 初始化插件包 | 测试插件 DEX 字节码 )
  8. 【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )
  9. 【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
  10. 个人随笔之《我有一个需要妈妈帮我实现的愿望》