主流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?

其实这篇分享,主要是想说明三点。

  1. 在web容器上,我们要与时俱进,不能只追求现在,在高并发下,我们要有相关的经验及应对措施。
  2. NIO要优于BIO,而jetty同时也是推荐用NIO
  3. jetty的灵活小巧,加载速度快,方便调试等都是促使我们去选择 tomcat公司很多不屑于用一样,其实tomcat还是很不错的。用tomcat支持并发2000的,也是经常干的事。之所以选择jetty,那原因就不多说了,jboss不给力而且又大,tomcat公司不支持,所以jetty就这样成为项目中的不二选择,当然他也是非常优秀的产品。 综上所述,在性能上tomcat与jetty差距并不大,可以说没有。只是jetty相对来说由于其灵活性,插件化,导致jetty某些场合(如虚拟机、嵌入式)更节约资源,当然对于我们现在的应用可以忽略这个因素。还是多关注一下我们的SQL语句和业务逻辑代码吧!
补充
3.1 Servlet3.0新特性
  1. 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
  2. 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
  3. 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。

Jetty 与 Tomcat 比较,及性能分析的更多相关文章

  1. 【Tomcat】Tomcat性能分析

    一.预研任务介绍和预研目标 任务介绍: Apache Tomcat是目前较为流行的web服务器,以其技术先进.性能稳定著称,其次它还是一个免费开源的项目. Tomcat性能分析的意义在于能为日常工作中 ...

  2. 详解web容器 - Jetty与Tomcat孰强孰弱

    Jetty 基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器.它有一个基本数据模型,这个数据模型就是 Handler(处理器 ...

  3. Jetty与Tomcat的区别 转

    Jetty与Tomcat的区别 由于没有研究过Tomcat,所以区别不好说,这里暂时就网上的一些言论和自己所了解到的一些总结下(摘自于许令波). Jetty 的架构从前面的分析可知,它的所有组件都是基 ...

  4. Jetty和Tomcat的使用及性能测试

    一 测试目的 这次对Jetty和Tomcat进行性能测试,主要是为了给新版本WebPortal的开发选择合适的Java Web Server. 我们之前对老的Rest和新的TMMI都进行过性能测试,R ...

  5. Jetty 与 Tomcat 的比较

    Tomcat 和 Jetty 都是作为一个 Servlet 引擎应用的比较广泛,可以将它们比作为中国与美国的关系,虽然 Jetty 正常成长为一个优秀的 Servlet 引擎,但是目前的 Tomcat ...

  6. Jetty与Tomcat综合比较

    Jetty基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器.它有一个基本数据模型,这个数据模型就是 Handler(处理器) ...

  7. 【jetty】Jetty与Tomcat的区别

    Jetty 的架构从前面的分析可知,它的所有组件都是基于 Handler 来实现,当然它也支持 JMX.但是主要的功能扩展都可以用 Handler 来实现.可以说 Jetty 是面向 Handler ...

  8. Jetty和tomcat的对比

    上周面试一个来自百度的员工,其中提到一个监控项目,使用jetty容器提供rest api服务,一直懵懂jetty /tomcat这些容器的区别,周末查了下,下面这个说的简单明了~ 转自:http:// ...

  9. jetty和tomcat启动项目

    首先jetty和tomcat区别,不全面说,只说我理解的.jetty架构比tomcat更为简单.jetty是基于Handler来实现的,易于拓展,因此更适合于同时处理且长时间保持连接:tomcat的架 ...

随机推荐

  1. poj 1185 炮兵阵地 状态压缩dp

    思路:定义一个三维数组dp[x][i][j]其中x为now和pre两种状态,now表示当前两行最优解,pre表示出了本行外,前两行的最优解.那么状态转移方程为 dp[now][j][k]=max(dp ...

  2. android图片压缩方法

    android 图片压缩方法: 第一:质量压缩法: private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = ...

  3. Spring 简单入门实例

    首先新建一个Web 项目 导入相应Jar 包 <?xml version="1.0" encoding="UTF-8"?> <beans xm ...

  4. 本机连接虚拟机Oracle时报错的解决办法

    虚拟机安装了Oracle服务器(桌面类)和客户端,里面使用plsql连接自己没有问题. 在本机连接虚拟机没有成功.虚拟机的地址是192.168.126.132,已经确认本机能ping通虚拟机. 先是报 ...

  5. hdu 1558 Segment set

    Segment set Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. Java Concurrency - Concurrent Collections

    Data structures are a basic element in programming. Almost every program uses one or more types of d ...

  7. AndroidStudio KeyMap

  8. 淘淘实惠多www.taohuiduo.com-专注独家折扣、1折特卖、9块9包邮、全场包邮

    淘淘实惠多-http://www.taohuiduo.com 专注独家折扣.1折特卖.9块9包邮.品牌折扣.20元封顶.全场包邮,所有的促销商品包括男装.女装.箱包配饰.母婴.日用.化妆品.数码.男鞋 ...

  9. SQL 行转列

    ---1.最简单的行转列/* 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94 想变成(得到如下结 ...

  10. sql server 2008 查询语句的红色波浪线

    在 Microsoft sql server management studio 里点击“编辑”——“IntelliSense”——“刷新本地缓存” 就会发现红色波浪线没了(前提是你的代码没错)