Jetty 与 Tomcat 比较,及性能分析
主流java的web容器,主要是Tomcat, jboss, jetty, resin。由于以前我们主要用的是jboss4.0.5,但jbosse用的servlet容器是tomcat5.5,所以只进行tomcat和 jetty的比较,两个谁好谁坏,适合你用,你才知道。resin就不说了,好像已经成为了history.
一、Tomcat
现在Tomcat版本已经是8.0了,在Tomcat6和7都增加了很多新的特性。
版本 特性
Tomcat7系列
![]()
Tomcat6系列 ![]()
二、jetty
由于jetty出生不好,不像tomcat是在apache强大的基金下面成长,所以变化很多。现在归于eclipse基金组织下,官方文档没有 tomcat那么细和明确。现在Jetty的最新版本是8.0.4,在我们这期使用的是jetty7.2.0,这两个版本系列与jetty6区别比较大。详细的学习了解及性能,在以后的分享再给出。
![]()
三、比较
| 名称 | 上手度 | 性能 | 更新频率 | 扩展性 |
| Tomcat | 容易 | 从Tomcat6支持nio,性能优秀 | 普通 | 不好 |
| Jetty | 比较慢。灵活性同时带来一定的复杂度 | 默认是NIO,性能优秀 | 快 | 好 |
综上所述,其实我们选用jetty或者tomcat并不是因为jetty一定比tomcat好,而是因为什么手顺,用什么。
四、NIO和BIO对比
测试环境:
Tomcat: 7.0.22 JDK:1.6.0_11 系统:linux,就是我们的开发机 场景:访问一个简单的jsp页面,没有什么业务代码,纯测试及处理request的性能与并发。
总的说来,BIO下,较为稳定,而NIO波动较大。但在10240并发下,bio彻底玩完,而NIO依然坚挺。所以在大并发下,NIO是不二选择。
Tomcat的NIO和BIO配置及运行时截图
| 名称 | 配置 | 运行时 |
| BIO | ||
| NIO |
五、为什么要用jetty?
其实这篇分享,主要是想说明三点。
- 在web容器上,我们要与时俱进,不能只追求现在,在高并发下,我们要有相关的经验及应对措施。
- NIO要优于BIO,而jetty同时也是推荐用NIO
- jetty的灵活小巧,加载速度快,方便调试等都是促使我们去选择 tomcat公司很多不屑于用一样,其实tomcat还是很不错的。用tomcat支持并发2000的,也是经常干的事。之所以选择jetty,那原因就不多说了,jboss不给力而且又大,tomcat公司不支持,所以jetty就这样成为项目中的不二选择,当然他也是非常优秀的产品。 综上所述,在性能上tomcat与jetty差距并不大,可以说没有。只是jetty相对来说由于其灵活性,插件化,导致jetty某些场合(如虚拟机、嵌入式)更节约资源,当然对于我们现在的应用可以忽略这个因素。还是多关注一下我们的SQL语句和业务逻辑代码吧!
补充
3.1 Servlet3.0新特性
- 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
- 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
- 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。
Jetty 与 Tomcat 比较,及性能分析的更多相关文章
- 【Tomcat】Tomcat性能分析
一.预研任务介绍和预研目标 任务介绍: Apache Tomcat是目前较为流行的web服务器,以其技术先进.性能稳定著称,其次它还是一个免费开源的项目. Tomcat性能分析的意义在于能为日常工作中 ...
- 详解web容器 - Jetty与Tomcat孰强孰弱
Jetty 基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器.它有一个基本数据模型,这个数据模型就是 Handler(处理器 ...
- Jetty与Tomcat的区别 转
Jetty与Tomcat的区别 由于没有研究过Tomcat,所以区别不好说,这里暂时就网上的一些言论和自己所了解到的一些总结下(摘自于许令波). Jetty 的架构从前面的分析可知,它的所有组件都是基 ...
- Jetty和Tomcat的使用及性能测试
一 测试目的 这次对Jetty和Tomcat进行性能测试,主要是为了给新版本WebPortal的开发选择合适的Java Web Server. 我们之前对老的Rest和新的TMMI都进行过性能测试,R ...
- Jetty 与 Tomcat 的比较
Tomcat 和 Jetty 都是作为一个 Servlet 引擎应用的比较广泛,可以将它们比作为中国与美国的关系,虽然 Jetty 正常成长为一个优秀的 Servlet 引擎,但是目前的 Tomcat ...
- Jetty与Tomcat综合比较
Jetty基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器.它有一个基本数据模型,这个数据模型就是 Handler(处理器) ...
- 【jetty】Jetty与Tomcat的区别
Jetty 的架构从前面的分析可知,它的所有组件都是基于 Handler 来实现,当然它也支持 JMX.但是主要的功能扩展都可以用 Handler 来实现.可以说 Jetty 是面向 Handler ...
- Jetty和tomcat的对比
上周面试一个来自百度的员工,其中提到一个监控项目,使用jetty容器提供rest api服务,一直懵懂jetty /tomcat这些容器的区别,周末查了下,下面这个说的简单明了~ 转自:http:// ...
- jetty和tomcat启动项目
首先jetty和tomcat区别,不全面说,只说我理解的.jetty架构比tomcat更为简单.jetty是基于Handler来实现的,易于拓展,因此更适合于同时处理且长时间保持连接:tomcat的架 ...
随机推荐
- TCP基础知识
TCP/IP网络协议栈分为应用层(Application).传输层(Transport).网络层(Network)和链路层(Link)四层.如下图所示 两台计算机通过TCP/IP协议通讯的过程如下所示 ...
- PHP,单双引号的区别‘“”“”’
一.转义 单引号:只转义\'和\\,其他不转义 双引号:都转义 二.变量解析 单引号:无法解析变量(原样输出) 双引号:可以解析变量 三.速度 单引号:更快 双引号:要分析是否有变量,转义内容更多 结 ...
- 小技巧之a标签自动解析URL
我们可能都知道javascript中的window.location对象用来获取当前页面的地址URL,并把浏览器重定向到新的页面.它有protocol.hostname.host.port.searc ...
- Git CMD - diff: Show changes between commits, commit and working tree, etc
命令格式 git diff [options] [<commit>] [--] [<path>…] git diff [options] --cached [<comm ...
- MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法
今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...
- 每天一道LeetCode--141.Linked List Cycle(链表环问题)
Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...
- BUG修改纪录
刚进入现在的公司,接手了一个遗留的项目,BUG频出,最近一个星期都在加班改BUG,身心疲惫,为了 现在,将来不会再被相同BUG困扰,特来纪录一下. 1.数据库设计字段时,对于int等类型最好设置默认值 ...
- Cocos2d-x实例:设置背景音乐与音效-设置场景实现
设置场景(Setting),Setting.h文件代码如下: #ifndef __Setting_SCENE_H__ #define __Setting_SCENE_H__ #include &quo ...
- HTML+CSS学习笔记(5)- 与浏览者交互,表单标签
HTML+CSS学习笔记(5)- 与浏览者交互,表单标签 1.使用表单标签,与用户交互 网站怎样与用户进行交互?答案是使用HTML表单(form).表单是可以把浏览者输入的数据传送到服务器端,这样服务 ...
- ASP.NET MVC 过滤器开发与使用
ASP.NET MVC 中给我们提供了内置的过滤器,通过过滤器,我们可以在控制器内的方法前后,添加必须的业务逻辑,如权限验证,身份验证,错误处理等. 今天,我们主要介绍3个过滤器:OutputCach ...