互联网开发-web文件上传性能问题
1. 问题描述
| 文件大小 | 部署环境 | 平均上传速度 |
|---|---|---|
| 5M | 外网 | 28s-36s |
| 5M | 公司局域内网 | 秒传,很快 |
2. 问题分析
在网上搜索“测速网”测试了一下公司外网的带宽情况:
上传带宽 = 1.04 Mbps = 133.2 kb/s
下载带宽 = 1.25 Mbps = 160 kb/s
单位换算:
1 Mbps(带宽速率)= 128 kb/s
1M = 1024 kb
为什么公司内网环境的上传那么快呢?由于对网络不是很了解,我特意问了一下公司的网络管理员辉哥,我们公司办理的企业级100M光纤带宽。所以在公司的局域内网环境下,上传速率和下载速率都是100Mbps。因为是光纤,所以上传速率和下载速率是对等的,都是100Mbps。所以在内网环境的上传,是很快的。我们来算一下内网的上传:
5M的上传文件,大小 = 5 * 1024 = 5120 KB;
100Mbps = 100 * 128 KB/S
上传用时 = 5120/12800 = 0.4S
为什么在外网上传就特别慢呢?因为公司对员工访问外网做了带宽限制,大概1-2Mbps的带宽;
按照3Mbps的带宽我们来算一下公司的外网上传:
5M上传文件, 大小 = 5*1024 = 5120 KB
公司外网上传带宽 = 2 Mbps = 2* 128 KB/S = 256 KB/s
上传用时 = 5120/256 = 20s
由于上传带宽是300多号员工共享的,实际上传带宽会低于2 Mbps,所以导致外网环境的上传大概30s左右。
3. 带宽知识普及
通常我们在运营商办理的带宽种类有如下集几种:
| 常见宽带 | 理论最高速率(Mbps) | 理论最高速率(KB/S) | 常见下载速率(供参考) |
|---|---|---|---|
| 1M | 1 Mbps | 128 KB/S | 77~128 KB/S |
| 2M | 2 Mbps | 256 KB/S | 154~256 KB/S |
| 3M | 3 Mbps | 384 KB/S | 231~384 KB/S |
| 4M | 4 Mbps | 512 KB/S | 307~512 KB/S |
| 6M | 6 Mbps | 620 KB/S | 462~620 KB/S |
| 8M | 8 Mbps | 1024 KB/S | 614~1024 KB/S |
| 10M | 10 Mbps | 1280 KB/S | 768~1280 KB/S |
| 30M | 30 Mbps | 3840 KB/S | 2560~3840 KB/S |
| 50M | 50 Mbps | 6400 KB/S | 3840~6400 KB/S |
| 100M | 100 Mbps | 12800 KB/S | 7680~12800 KB/S |
从列表可见,我们【使用时的真实速率】通常达不到运营商支持的【最高速率】。
运营商所谓的【最高速率】通常指我们使用的【下载速率】。为什么没有【上传速率】呢?
(1)上传带宽不一定等于下载带宽。
- 宽带是ADSL接入(电话线接入)的话,由于ADSL使用的技术是一种不对称数字用户线,所以ADSL是不对等带宽,通常上传速度只有下载速度的1/8左右,可以说是国际标准了。
- 光纤接入带宽的话,技术上是利用两条光纤分别负责上行和下行。所以原则上,上传下载速度是对等的。实际上呢,光纤用户依然被宽带运营商限制了上行带宽,即使是光纤入户的百兆带宽,上传带宽也不足4M。
(2)为什么宽带运营商要限制家庭用户的上行宽带
主要原因可能就是为了省钱,毕竟公司都是以利益为主嘛。网民长期以来的网络使用习惯,使他们已经习惯了上行带宽慢,而且也没有用户死气白咧的要求提高上行带宽。如果宽带运营商给予上下行相同的速度,会造成资源浪费。但如果把上行带宽资源销售给机房的企业专线租用客户,则会获得更多的利益。托管在机房的服务器需要大量上行带宽,并不需要太多下行带宽。而且带宽价格非常昂贵,往往机房10M上行专线租用的费用就是家庭100M费用的5、6倍。由此看来,运营商很可能把亏欠我们的上行带宽拿去高价卖给企业机房了,你大爷!
4. 总结
综上所述,国内的上行带宽(光纤接入)最大值4Mbps,然而通常也就 2Mbps 左右的上行带宽。
所以互联网上传文件,很慢的。不要再盲目的改你的代码了,没用的。
互联网开发-web文件上传性能问题的更多相关文章
- web文件上传大小限制
最近在项目中遇到上传文件,对上传文件的大小需要进行限制,这里学习和整理了一下一些常规的文件大小限制的方法. 一般分为两种方式,一种是服务器端判断文件大小进行限制,这种方法的存在明显的缺陷,当用户过多后 ...
- Java开发系列-文件上传
概述 Java开发中文件上传的方式有很多,常见的有servlet3.0.common-fileUpload.框架.不管哪种方式,对于文件上传的本质是不变的. 文件上传的准备 文件上传需要客户端跟服务都 ...
- servlet web文件上传
web文件上传也是一种POST方式,特别之处在于,需设置FORM的enctype属性为multipart/form-data. 并且需要使用文件域. servlet的代码比较关键是这几句: // 使用 ...
- Java Web文件上传
参考资料:http://www.cnblogs.com/xdp-gacl/p/4200090.html 一.问题描述 Java Web文件上传需要借助一些第三方库,常用的是借助Apache的包,有两个 ...
- WEB文件上传下载功能
WEB文件上传下载在日常工作中经常用到的功能 这里用到JS库 http://files.cnblogs.com/meilibao/ajaxupload.3.5.js 上传代码段(HTML) <% ...
- Web 文件上传 目录
0. SpringMVC -- 梗概--源码--贰--上传 1. Web上传文件的原理及实现 2. Web文件上传方法总结大全 3. SpringMVC 文件上传配置,多文件上传,使用的Multipa ...
- Java Web文件上传原理分析(不借助开源fileupload上传jar包)
Java Web文件上传原理分析(不借助开源fileupload上传jar包) 博客分类: Java Web 最近在面试IBM时,面试官突然问到:如果让你自己实现一个文件上传,你的代码要如何写,不 ...
- SpringBoot | 第十七章:web应用开发之文件上传
前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继续吧.通常,我们在做we ...
- SpringBoot --web 应用开发之文件上传
原文出处: oKong 前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继 ...
随机推荐
- Select2下拉选项库 部分积累
用了这么久的Select2插件,也该写篇文章总结总结. 在我的印象里Select2有2个版本,最新版本有一些新的特性,并且更新了一下方法参数,比最初版本要好看一些,本文针对新版本. 官网:http:/ ...
- [P3812][模板]线性基
解题关键:求异或最大值.线性基模板题. 极大线性无关组的概念. 异或的值域相同. #include<cstdio> #include<cstring> #include< ...
- HDU 6396(2018多校第七场1011) Swordsman
场上场下各种TLE到怀疑人生...经过大佬指点之后才知道要用fread才能过,一般的快读不行... 题意:一个剑客打小怪兽,有n头小怪兽,剑客和小怪兽有m个属性.只有剑客的m个属性都大于等于某个小怪兽 ...
- 机器人自主移动的秘密:实际应用中,SLAM究竟是如何实现的?(二)
博客转载自:https://www.leiphone.com/news/201612/FRzmoEI8Iud6CmT2.html 雷锋网(公众号:雷锋网)按:本文作者SLAMTEC(思岚科技公号sla ...
- cmake中设置ELF文件加载动态库的位置
1. 三个文件 1. world.c #include<stdio.h> void world(void) { printf("world.\n"); } 2. hel ...
- conda 添加bioconda源,创建/删除/重命名环境
1.conda安装 在https://repo.continuum.io/miniconda/选择conda版本 wget "https://repo.continuum.io/archiv ...
- clions的使用
最近无聊玩了下CLion这个IDE,顺便学习了下CMAKE怎么使用.话说CLion的CMAKE的支持还不是特别的完好,和命令行模式还有有区别,有如下几个问题: 1:CMAKE的编译目录不能指定,而是I ...
- python基本概念——字符串
1.字符串 一个字符串用什么引号开头,就必须用什么引号结尾.两上三引号之间的一切都作为字符串的内容,对应的单引号与双引号却只能创建单行字符串. 2.转义符 \,行末的单独一个反斜杠表示字符串在下一行继 ...
- super-smack
我有个办法,不过不是用LR,是用super-smack,如果只对数据库进行抗压力测试,应该管用.Super-smack 现在是1.3版,源码下载地址如下:http://vegan.net/tony/s ...
- Algorithms - Insertion sort
印象 图1 插入排序过程 思想 插入排序(Insertion Sort)的主要思想是不断地将待排序的元素插入到有序序列中,是有序序列不断地扩大,直至所有元素都被插入到有序序列中. 分析 时间复杂度: ...