网站首页 > 博客文章 正文
一,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.2.2.RELEASE</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-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
6,jvm配置
-server
-Xms4096m
-Xmx4096m
-XX:+UseG1GC
7,用jmeter压测
tomcat,jetty,undertow分别模拟10万请求,查看各自的吞吐量数据
场景一:100个线程 循环1000次请求测试接口,模拟10万请求
场景二:1000个线程 循环100次请求测试接口,模拟10万请求
8,实验结果
tomcat
100线程循环1000次吞吐量数据
1000线程循环100次吞吐量数据
jetty
100线程循环1000次吞吐量数据
1000线程循环100次吞吐量数据
undertow
100线程循环1000次吞吐量数据
1000线程循环100次吞吐量数据
通过压测结果图统计如下
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
最后说一句
感谢您的阅读,您的正反馈是我持续创作的动力,十分期待欢迎您的关注!
猜你喜欢
- 2024-10-29 jfinal vue ElementUI OA HRM的前后端分离CRM系统源码免费分享
- 2024-10-29 如何项目性能优化?压力测试,数据分析,代码实战
- 2024-10-29 Spring Boot 3 使用 Java 17 和 Jakarta EE 9,并支持GraalVM 的原生 Java
- 2024-10-29 走进Spring Boot源码学习之路和浅谈入门
- 2024-10-29 7 种提升 Spring Boot 吞吐量神技
- 2024-10-29 教你Spring Boot 2.3 优雅关闭的新姿势
- 2024-10-29 拥抱Kubernetes,再见了Spring Cloud
- 2024-10-29 美团动态线程池实践思路,开源了(美团 线程池)
- 2024-10-29 Spring Boot性能优化:提高响应速度的秘密
- 2024-10-29 Java 9 和Spring Boot 2.0纷纷宣布支持的HTTP/2到底是什么?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)