您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

吊打tomcat的高性能web服务器undertow

时间:2021-05-07 12:01:18  来源:今日头条  作者:面包君讲生活

一,undertow介绍

吊打tomcat的高性能web服务器

 

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服务器

吊打tomcat的高性能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次吞吐量数据

吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 

1000线程循环100次吞吐量数据

吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 

jetty

100线程循环1000次吞吐量数据

吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 

1000线程循环100次吞吐量数据

吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 

undertow

100线程循环1000次吞吐量数据

吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 

1000线程循环100次吞吐量数据

吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 


吊打tomcat的高性能web服务器

 

通过压测结果图统计如下

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

最后说一句

感谢您的阅读,您的正反馈是我持续创作的动力,十分期待欢迎您的关注!



Tags:undertow   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一,undertow介绍 1,undertow简介:Undertow是RedHAT红帽公司开源的产品,采用java开发,是一款灵活,高性能的web服务器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默认Web容器。在javaw...【详细内容】
2021-05-07  Tags: undertow  点击:(184)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条