Tomcat,Jetty和Undertow是目前比较主流的3款Servlet容器,而且Spring Boot框架还提供了对它们的集成支持(默认使用的是Tomcat),网络上有许多文章都在介绍Undertow容器的性能比Tomcat和Jetty要好。本着事实就是的原则,我对这三款容器做了一个压测对比,真正通数据来对比到底是谁有优势,同时也是作为容器选择的一个参考。

测试环境

  1. 压测工具:JMeter 5.2.1,使用插件jpgc-casutg提供的Concurrency Thread Group线程组对象
  2. 测试程序:一个简单的基于Spring Boot框架程序,提供2个接口,分别模拟返回简单字符串对象和复杂对象,详见://TODO
  3. 测试用例:分别使用100个线程,500个线程,1000个线程三组压力进行测试
  4. 压测环境:
    • 操作系统:Ubuntu 18.04 LTS Desktop
    • 处理器:Intel Core i5-6200U CPU @ 2.30GHz × 4
    • 内存:8GB
  5. 压测主要指标:响应时间,吞吐量,系统负载(CPU,内存,线程数)

压测指标

Tomcat vs Jetty vs Undertow性能对比-LMLPHP

吞吐量:Undertow > Jetty > Tomcat

响应时间:Jetty < Tomcat < Undertow

Tomcat vs Jetty vs Undertow性能对比-LMLPHP

CPU:Undertow < Jetty < Tomcat

Tomcat vs Jetty vs Undertow性能对比-LMLPHP

内存:Undertow < Jetty < Tomcat

Tomcat vs Jetty vs Undertow性能对比-LMLPHP

线程数:Undertow < Jetty < Tomcat

结论

结论:综合吞吐量,响应时间以及资源消耗,Undertow胜出。

05-20 04:32