Tomcat 太重?试试这个轻量容器!性能很炸!
在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。
同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?本文将为大家细细讲解。
1SpringBoot中的Tomcat容器
SpringBoot可以说是目前最火的Java Web框架了。它将开发者从繁重的xml解救了出来,让开发者在几分钟内就可以创建一个完整的Web服务,极大的提高了开发者的工作效率。Web容器技术是Web项目必不可少的组成部分,因为任Web项目都要借助容器技术来运行起来。
在SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。
2SpringBoot设置Undertow
对于Tomcat技术,Java程序员应该都非常熟悉,它是Web应用最常用的容器技术。我们最早的开发的项目基本都是部署在Tomcat下运行,那除了Tomcat容器,SpringBoot中我们还可以使用什么容器技术呢?
没错,就是题目中的Undertow容器技术。
- 什么是Undertow?
Undertow 是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于
NIO
的非堵塞机制。Undertow 是红帽公司的开源产品,是 Wildfly 默认的 Web 服务器。Undertow 提供一个基础的架构用来构建 Web 服务器,这是一个完全为嵌入式设计的项目,提供易用的构建器 API,完全向下兼容Java EE Servlet 3.1
和低级非堵塞的处理器。 - Undertow的特点
- 高性能 在多款同类产品的压测中,在高并发情况下表现出色。
- Servlet4.0 支持 它提供了对 Servlet4.0 的支持。
- Web Socket 完全支持,包括JSR-356,用以满足 Web 应用巨大数量的客户端。
- 内嵌式 它不需要容器,只需通过 API 即可快速搭建 Web 服务器。
- 灵活性 交由链式Handler配置和处理请求,可以最小化按需加载模块,无须加载多余功能。
- 轻量级 它是一个 内嵌Web 服务器, 由两个核心 Jar 包组成
SrpingBoot已经完全集成了Undertow技术,我们只需要引入Undertow的依赖即可,如下所示。
移除Tomcat的依赖
<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>
添加Undertow依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
配置好以后,我们启动应用程序,发现容器已经替换为Undertow。
那我们为什么需要替换Tomcat为Undertow技术呢?
3Tomcat与Undertow的优劣对比
Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。
但是,Tomcat和ApacheHTTP服务器不是一个东西,ApacheHTTP服务器是用C语言实现的HTTP Web服务器。Tomcat是完全免费的,深受开发者的喜爱。
Undertow是一款灵活的高性能Web服务器,支持阻塞IO和非阻塞IO。由于Undertow采用Java语言开发,可以直接嵌入到Java项目中使用。同时, Undertow完全支持Servlet和Web Socket,在高并发情况下表现非常出色。
我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:
QPS测试结果对比:
- Tomcat
- Undertow
内存使用对比:
- Tomcat
- Undertow
通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。所以,如果是高并发的业务系统,Undertow是最佳选择。
4最后
SpingBoot中我们既可以使用Tomcat作为Http服务,也可以用Undertow来代替。Undertow在高并发业务场景中,性能优于Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下Undertow,你会发现你的系统性能会得到很大的提升。
相关文章
- 【Tomcat优化篇】如何让你的Tomcat性能更加优越
- linux tomcat宕机自动启动脚本,tomcat宕机自动重启脚本「建议收藏」
- Maven配置Tomcat_maven和tomcat的区别
- 常见web中间件漏洞总结 | Tomcat Nginx JBoss
- nginx+tomcat报504超时错误详解程序员
- Linux系统下Tomcat使用80端口的方法
- Tomcat中Context的配置详解编程语言
- 服务安装安装Linux Tomcat服务,轻松管理Web应用程序(linux的tomcat)
- Linux中查看Tomcat启动日志的技巧(linux查看tomcat启动日志)
- spring boot上传文件错误The temporary upload location [/tmp/tomcat.******/work/Tomcat/localhost/ROOT] is not valid详解编程语言
- MySQL与Tomcat的完美结合(mysql和tomcat)
- Linux查看Tomcat端口的方法(linux查看tomcat端口)
- Linux下查看Tomcat日志的方法(linux查看tomcat日志)
- Linux下重启Tomcat的操作步骤(linux重启tomcat)
- 轻松启动Tomcat:Linux环境的实现(linux怎么启动tomcat)
- Linux查看Tomcat进程:掌握必备指令(linux查看tomcat进程)
- Linux查看Tomcat版本的方法与步骤(linux查看tomcat版本)
- Linux下快速安装Tomcat服务器(linux下安装tomcat)
- Linux下安装Tomcat服务器的步骤(linux上安装tomcat)
- Linux系统下部署高性能Tomcat服务器(linux部署tomcat)
- 在Linux下轻松启动Tomcat(linux下启动tomcat)
- Linux下重启Tomcat的命令指南(linux重启tomcat命令)
- Apache Tomcat 7.0.54现已可供下载
- CVE-2017-12617-Tomcat远程代码执行漏洞复现测试
- Nginx + Tomcat 有关SSI 的那些事儿
- 以Linux运行Tomcat,实现轻松部署Web应用(linux tomcat)
- Apache与Tomcat服务器整合的基本配置方法及概要说明