候选项:
Jetty + Apache FileUpload
JDK自带的HttpServer + 自行解析
Simple
Jetty + Jetty MultiPartFilter
备注:tomcat过于臃肿,不考虑。
测试情况:
两台机器,一台使用httpclient模拟客户端上传文件,一台作为http服务器。
两台机器均为8核、8G内存。
耗时:
以32..6M的文件测试
框架|性能|并发数
|
1
|
20
|
100
|
200
|
Jetty + Apache FileUpload
|
5.5s
|
13.7s
|
111s
|
207s
|
JDK自带的HttpServer
|
5.8s
|
78s
|
390
|
--
|
Simple
|
5.2s
|
24s
|
130s
|
330s
|
Jetty+ Jetty MultiPartFilter
|
5.5s
|
26s
|
112s
|
203s
|
单线程情况下, 性能均差不多,在多线程情况下JDK自带的HttpServer和Simple调度能力不足。
Cpu占用率
框架
|
200个并发时Cpu占用率
|
Jetty + Apache FileUpload
|
130%
|
JDKServer
|
350%
|
Simple
|
120%
|
Jetty+ Jetty MultiPartFilter
|
130%
|
客户端:8核全负载,HttpClient太耗资源了。
服务器端:JDKServer比较耗资源,其他的都稳定在130%左右
功能拓展性:
拓展性主要考虑:
HttpServer接受到上传请求时的一些处理。比如:当请求到Server时,如果合法则获取输入流进行上传;如果不合法,则直接返回处理结果。
Simple : 文件全部上传到临时文件夹后才能进行业务处理。极度不符合
MultiPartFilter: 使用过滤器处理缺点有二:一是业务逻辑不集中,部分在于Servlet中,部分在于过滤器中;二是改写MultiPartFilter并进行封装的难度稍大。
JDK自带Server: 符合条件。但需要自己解析http输入流,并进行封装。难度较大。
Apache FileUpload:符合条件,对Http请求的封装很棒。
Apache FileUpload > JDKServer > MultiPartFilter> Simple
最终选择:Jetty + Apache FileUpload
分享到:
相关推荐
1、完美实现http上传文件 2、界面已经完全实现 3、适合学习mfc框架和http上传
C 语言实现的http文件上传下载服务 系统平台:windows 开发工具:vs2010 开发语言:C 程序为单线程,使用I/O多路复用实现并发 抽取libevent的最最最基础框架,自己封装event 使用BSD tree.h的红黑树
upload4j是一款轻量级http文件上传框架,使用简单,实现高效,功能专一,摆脱传统http文件上传框架的繁琐。 upload4j的诞生并不是为了解决所有上传需求,而是专注于基础通用需求。 upload4j带来的 实现直接文件流...
在线演示:...通过观察本框架的核心文件会发现核心文件只有ax.css和ax.js,加载速度飞快。 ax前端框架对一些常用的功能进行集成处理,比如美化滚动条、菜单、cookie等,在演示页面复制代码即可使用。
文件上传 IFileServiceClient fileClient; //此实例可通过DI框架获得 var ownerToken = "业务服务器返回的token"; var periodMinute = 0; //有效期,0不过期 var updResult = await fileClient.UploadAsync...
Spring MVC是一个在Java平台上构建Web应用程序的框架,它提供了一种轻量级且强大的方式来处理HTTP请求和响应。文件上传是Web应用程序中常见的功能之一,Spring MVC提供了方便的机制来处理文件上传。下面是关于Spring...
支持大文件上传,上传大文件不会oom; 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求; 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回...
xUtils 最初源于Afinal框架 进行了大量重构 使得xUtils支持大文件上传 更全面的http请求协议支持 10种谓词 拥有更加灵活的ORM 更多的事件注解支持且不受混淆影响 xUitls最低兼容android 2 2 api level 8 目前...
实例代码采用了第三方HttpClinet和异步http框架两种方式演示android客户端文件的上传,其中异步http框架的使用使上传操作变得格外的简单!
Netroid框架 HttpURLConnection类 文件下载demo 主要目的是测量文件下载的速度,注意网络环境的一致性
使用NeatUpload实现大文件上传。 框架:3.5 http://www.heycoder.com/noteinfo9.aspx
这是本人写的一个基于uploadify-3.2.1插件上传图片(文件)的Web项目,采用Struts2框架,实现了多图片(文件)上传,并可显示上传进度,不会刷新当前页面,上传成功后,立即显示所上传的图片(文件)。下载解压后...
本资源是在“ssh框架搭建实例源码1”基础上增加了修改了分页技术,实现数据从数据库中读取,并补充“ssh框架搭建实例源码1”中忘记上传的与分页技术相关的jar包,更新数据库文件ssh.sql。本资源所需的jar包请到“ssh...
在SSM基础上完成了文件上传与下载,如果对ssm框架搭建不清楚的同学,可以看这篇文章 http://blog.csdn.net/qq_31962349/article/details/74905584
原来系统中采用webservice技术进行系统间通信,传递bean属性和文件。现在采用http协议代替,速度更快,更便捷。使用java httpclient做的一个demo,采用springboot框架,下载后放idea里面就可以运行。
但是搜索使用到的案例不多,使用的时候,也是一步一个脚印一样摸着石头过河,这个控件在界面呈现上,叫我之前使用过的Uploadify 好看一些,功能也强大些,本文主要基于我自己的框架代码案例,介绍其中文件上传插件...
主要使用express框架及node.js搭建服务端,数据存储至json文件中,可充分扩展至数据库中。文件包括:db数据存储文件夹,node_modules模块,baseFunc.js基础功能模块,dbsave.js数据存放模块,index.js为http请求接口...
问题主要出现在项目中需要上传视频文件,超过500M,但是报错了。 原因是tomcat限制了大小,此问题解决springBoot框架下tomcat启动 模式的文件上传大小限制。
用springmvc的框架,实现了文件的上传,真实进度条的显示,多种上传方式选择一种,总有一种适合。jar包也都在工程里,是maven项目。访问http://localhost:8110/SpringMVCFileUpload/up3.jsp,或者同目录下的其他jsp...
这是在 Laravel 5.4 框架下的多文件 Ajax 上传的部分代码,详情请参见 http://blog.csdn.net/lmn13/article/details/79280756(附带 gif 图)