吊打tomcat的高性能web服务器undertow
一,undertow介绍
1,undertow简介:
Undertow是RedHAT红帽公司开源的产品,采用Java开发,是一款灵活,高性能的web服务器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默认Web容器。在javaweb容器的世界里,Tomcat和jetty是大众熟知的,undertow目前逐步进入大众的视角,它是一款能和tomcat媲美的神器,在性能方面吊打tomcat。目前Undertow已经成为springboot 默认集成的三大容器之一。
2,undertow特点:
undertow在高并发业务场景中,性能优于tomcat
1,高性能,在多款同类产品的压测对比中,高并发情况下表现出色。
2,Servlet4.0支持,它提供了对Servlet4.0的支持。
3,Web Socket完全支持,包含JSR-356,用以满足Web应用巨大数量的客户端。
4,内嵌式,它不需要容器,只需要通过api即可快速搭建Web服务器。
5,灵活性,交由链式Handler配置和处理请求,可以最小化按需加载模块,无须加载多余功能。
6,轻量级,它是一个内嵌Web服务器,由两个核心jar包组成。
3,springboot集成的web服务器
2.2.13.RELEASE springboot版本默认支持的三种Servlet容器版本如下
2.2.13.RELEASE springboot版本(官网提供的) |
|
Web服务器 |
集成版本 |
Undertow |
2.0.33.Final |
tomcat |
9.0.41 |
jetty |
4.1.17 |
二,实验验证
实验准备材料如下:
1,springboot版本
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.2</version>
</parent>
2,测试类的controller
@RequestMApping("/reflect")
@ResponseBody
public void reflect() {Object object = springReflectionUtil.springInvokeMethod("reflectService", "handleUser");if (object instanceof User) {User invoke = (User)object;}
}
3,springboot默认就内嵌了tomcat
在pom文件中引入以下依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
4,项目整合undertow
在pom文件中引入以下依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions>
</dependency>
5,项目整合jetty
在pom文件中引入以下依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions>
</dependency>
6,jvm配置
-server
-Xms4096m
-Xmx4096m
-XX:+UseG1GC
7,用jmeter压测
tomcat,jetty,undertow分别模拟10万请求,查看各自的吞吐量数据
场景一:100个线程 循环1000次请求测试接口,模拟10万请求
场景二:1000个线程 循环100次请求测试接口,模拟10万请求
8,实验结果
通过压测结果图统计如下
100线程循环1000次(吞吐量/sec) |
||||
第一次 |
第二次 |
第三次 |
平均值 |
|
Tomcat |
1119.7 |
1497.5 |
1490.5 |
1369.2 |
jetty |
1363.7 |
1429.3 |
1390.5 |
1394.5 |
undertow |
1607.9 |
1467.3 |
1545.6 |
1540.3 |
1000线程循环100次(吞吐量/sec) |
||||
第一次 |
第二次 |
第三次 |
平均值 |
|
Tomcat |
1212.2 |
1088.4 |
1107.5 |
1136.0 |
jetty |
1225.9 |
1222.6 |
1186.3 |
1211.6 |
undertow |
1383.7 |
1468.1 |
1434.2 |
1428.7 |
三,实验结论
100个线程循环1000次,都用默认配置,没有调配置参数情况下,tomcat的吞吐量平均是每秒1369.2,jetty的吞吐量平均是1394.5,undertow的吞吐量平均是每秒1540.3
1000个线程循环100次,都用默认配置,没有调配置参数情况下,tomcat的吞吐量平均是每秒1136.0,jetty的吞吐量是1211.6,undertow的吞吐量是每秒1428.7
可以看出,默认配置情况下,undertow的吞吐量领先于jetty和tomcat,表现更优异
undertow>jetty>tomcat
吊打tomcat的高性能web服务器undertow相关推荐
- Nginx高性能Web服务器实战教程PDF
网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...
- WildFly8(JBoss)默认web服务器-------Undertow
Java微服务框架之Undertow 一.Undertow简介: Undertow 是红帽公司(RedHat)的开源产品,是 WildFly8(JBoos) 默认的 Web 服务器. 官网API给出一 ...
- nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案
nginx系列友情链接: nginx高性能WEB服务器系列之一简介及安装 https://www.cnblogs.com/maxtgood/p/9597596.html nginx高性能WEB服务器系 ...
- 分享关于搭建高性能WEB服务器的一篇文章
这篇文章主要介绍了Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器的相关资料,需要的朋友可以参考下(http://m.0813s ...
- LEMP构建高性能WEB服务器(第三版)
LEMP 自动化编译脚本下载:http://docs.linuxtone.org/autoinstall/ (定期更新,欢迎多测试,找bug) 介绍参考:http://bbs.linuxtone.or ...
- Linux下Tomcat与Apache Web服务器的整合
原文:http://os.51cto.com/art/200709/57327.htm ◆1.引言 基于Web技术的Internet/Intranet近年来已经得到了广泛的应用,Intranet是以T ...
- nginx高性能WEB服务器系列之七--nginx反向代理
nginx系列友情链接: nginx高性能WEB服务器系列之一简介及安装 https://www.cnblogs.com/maxtgood/p/9597596.html nginx高性能WEB服务器系 ...
- 服务器后端开发系列——《实战Nginx高性能Web服务器》
1.高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例 内容:概述Nginx的背景知识和简单的入门实例. 2.高性能Web服务器Nginx的配置与部署研究(2)Nginx入门级 ...
- Nginx高性能Web服务器详解
Nginx高性能Web服务器详解 1. 什么是Nginx 1.1 优点 1.2 缺点 2. Nginx负载均衡策略 2.1 轮询策略 2.2 加权轮询策略 2.3 IP hash策略 3. 常用指令 ...
最新文章
- 用漫画了解 Linux 内核到底长啥样
- mysql 存储过程声明式游标_Mysql 存储过程中使用游标循环读取临时表
- 七种Vue3传值方式
- c语言搜索关键字吗,c语言-以关键字搜索程序
- Linux中/proc目录下文件详解(二)
- 字典常用的方法(内建函数)
- 每个人都有自己的秘密
- 【转】刨根究底字符编码之十五——UTF-32编码方式
- 桶排序/Bucket Sort
- php垂直对齐,CSS垂直对齐不起作用的原因及解决方法
- 敏捷开发系列学习总结(17)——团队需要Scrum Master做这六件事
- Oracle18C RPM安装介绍
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(45)-工作流设计-设计步骤
- Posix线程编程指南(2)
- 在线教育工具—白板系统的迭代1——bug监控排查
- UEFI开发探索31–鼠标GUI构建
- 计算机辅助绘图包括,计算机辅助绘图实用教程
- RPA案例 | 电商使用超自动化平台提升运营精细化
- mysql new 与old_mysql触发器new和old区别 阿星小栈
- Excel中建立数据透视表,想用计算字段功能,但是该选项灰色无法点击,怎么办?
热门文章
- 公众号客服消息超过48小时_免费模板消息群发的方法,在这里!
- OpenGL 相关的理论
- [xueqi]吃着榨菜,轻松搞下漏洞百出的湾湾站
- 屏幕刷新机制小结(九)
- 苹果电脑可以装windows系统吗_Linux系统安装Windows软件? 通过这个工具可以做到...
- Windows Workflow Foundation(一)
- 利用搜狗抓取微信公众号文章
- 【java-调用摄像头进行截屏与保存-实例篇1-0716】
- 【备忘】【不定时更新】那些有用有趣的网站君们~~
- Hive数据仓库数据分析