一,undertow介绍1,undertow简介:Undertow是RedHAT红帽公司开源的产品,采用java开发,是一款灵活,高性能的WEB服务器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默认Web容器。在javaweb容器的世界里,tomcat和jetty是大众熟知的,undertow目前逐步进入大众的视角,它是一款能和tomcat媲美的神器,在性能方面吊打tomcat。目前Undertow已经成为springboot 默认集成的三大容器之一。,2,undertow特点:undertow在高并发业务场景中,性能优于tomcat1,高性能,在多款同类产品的压测对比中,高并发情况下表现出色。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服务器集成版本Undertow2.0.33.Finaltomcat9.0.41jetty4.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:+UseG1GC7,用jmeter压测tomcat,jetty,undertow分别模拟10万请求,查看各自的吞吐量数据场景一:100个线程 循环1000次请求测试接口,模拟10万请求场景二:1000个线程 循环100次请求测试接口,模拟10万请求8,实验结果tomcat100线程循环1000次吞吐量数据1000线程循环100次吞吐量数据jetty100线程循环1000次吞吐量数据1000线程循环100次吞吐量数据undertow100线程循环1000次吞吐量数据1000线程循环100次吞吐量数据通过压测结果图统计如下100线程循环1000次(吞吐量/sec)第一次第二次第三次平均值Tomcat1119.71497.51490.51369.2jetty1363.71429.31390.51394.5undertow1607.91467.31545.61540.31000线程循环100次(吞吐量/sec)第一次第二次第三次平均值Tomcat1212.21088.41107.51136.0jetty1225.91222.61186.31211.6undertow1383.71468.11434.21428.7三,实验结论100个线程循环1000次,都用默认配置,没有调配置参数情况下,tomcat的吞吐量平均是每秒1369.2,jetty的吞吐量平均是1394.5,undertow的吞吐量平均是每秒1540.31000个线程循环100次,都用默认配置,没有调配置参数情况下,tomcat的吞吐量平均是每秒1136.0,jetty的吞吐量是1211.6,undertow的吞吐量是每秒1428.7可以看出,默认配置情况下,undertow的吞吐量领先于jetty和tomcat,表现更优异undertow>jetty>tomcat最后说一句感谢您的阅读,您的正反馈是我持续创作的动力,十分期待欢迎您的关注!
本文出自快速备案,转载时请注明出处及相应链接。