Java技术栈 www.javastack.cn 关注阅读更多优质文章 在 Java Web 容器的世界里,Tomcat 和 Jetty 是大名鼎鼎的、用的最多的开源项目,也是大众熟知的。...今天再介绍另外一款能和 Tomcat 媲美的神器:Undertow,据说性能方面还要吊打 Tomcat,如果你还不知道它,那你就 OUT 了。.../ image.png 从测试结果看,这三个 Servlet 容器都具有不错的性能,但 Undertow 性能更好,Tomcat 和 Jetty 紧随其后。...Jetty 在启动时的内存占用最大,为:311 MB, Tomcat 和 Undertow 的初始内存占用都很低,大约为:120 MB,而 Undertow 的初始内存占用最低,为:114 MB。...所以,对于学习和一般应用来说,Tomcat 足矣,一方面 Tomcat 学习资料多,另一方面 Tomcat 用的更广泛,很多坑别人帮你踩了,很多漏洞也已经暴露出来了。
' }最后添加undertow依赖:compile 'org.springframework.boot:spring-boot-starter-undertow:2.7.0'2、如果是maven工程:...> org.springframework.boot spring-boot-starter-undertow...' } compile 'org.apache.tomcat.embed:tomcat-embed-core:8.5.51' compile 'org.apache.tomcat.embed:tomcat-embed-el...:8.5.51' compile 'org.apache.tomcat.embed:tomcat-embed-websocket:8.5.51'maven项目只需要修改pom.xml文件添加tomcat...指定版本 tomcat.version>9.0.58tomcat.version>
Tomcat,Jetty和Undertow是目前比较主流的3款Servlet容器,而且Spring Boot框架还提供了对它们的集成支持(默认使用的是Tomcat),网络上有许多文章都在介绍Undertow...容器的性能比Tomcat和Jetty要好。...> Jetty > Tomcat 响应时间:Jetty Tomcat Undertow ?...2.CPU使用率:Undertow Tomcat ? 3.内存使用率:Undertow Tomcat ?...4.线程数:Undertow Tomcat ? 结论 结论:综合吞吐量,响应时间以及资源消耗,Undertow胜出。
Spring Boot内嵌容器支持Tomcat、Jetty、Undertow。为什么选择Undertow? 这里有一篇文章,时间 2017年1月26日发布的: Tomcat vs..../spring/tomcat-vs-jetty-vs-undertow-comparison-of-spring-boot-embedded-servlet-containers/ 这篇文章详细测试了Spring...Boot应用在三种容器下的性能和内存使用,内含完整的测试代码和测试流程。...证明了Undertow在性能和内存使用上是最好的。...org.springframework.boot spring-boot-starter-tomcat
Undertow 简介 Undertow 是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。...Undertow 提供一个基础的架构用来构建 Web 服务器,这是一个完全为嵌入式设计的项目,提供易用的构建器 API,完全向下兼容 Java EE Servlet 3.1 和低级非堵塞的处理器。...替换默认的Tomcat Spring boot 默认使用 Tomcat 内嵌容器 。依赖于 spring-boot-starter-web 。我们只需要排除 Tomcat 依赖。...当然你也可以再折腾一番,通过在Spring Boot 配置文件application.yml中配置 ServerProperties 和ServerProperties.Undertow 的相关属性。...其实在并发量不大的情况下 Undertow、和其它两款 Servlet Web 容器 Jetty 、Tomcat 的差距并不是很大。 Undertow 的优势是高并发下的吞吐量。
TOMCAT 通过切换成tomcat再按照以上过程压测,发现HTTP和tomcat才是天生一对,组合压测下的结果和Jetty不开启异步的结果差不多。这里不再重复贴出数据表格。 ...UNDERTOW 通过Jetty和tomcat的压测结果发现,HTTP异步并不一定会提升程序性能,只有在特定的条件下才会起到正面的效果,如应用服务器为非NIO时。...而undertow和jetty一样是NIO,所以这里不再对比异步非异步,直接只测非异步。...UNDERTOW业务接口(无异步) ioThreads 4 workerThreads 52 结果 2200 UNDERTOW天花板(无异步) ioThreads...tomcat ? ? UNDERTOW ? ?
同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?...那我们为什么需要替换Tomcat为Undertow技术呢? Tomcat与Undertow的优劣对比 Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。...Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。...我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示: QPS测试结果对比: Tomcat Undertow 内存使用对比: Tomcat Undertow 通过测试发现...在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。
Spring Boot 在关闭时,如果有请求没有响应完,在不同的容器会出现不同的结果,例如,在 Tomcat 和 Undertow 中会出现中断异常,那么就有可能对业务造成影响。...版本信息 Spring Boot 版本: 2.0.0.RELEASE Tomcat 优雅停机 @SpringBootApplication public class Application {...@Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat..."); field.setAccessible(true); Undertow undertow = (Undertow) field.get...(webServer); ListUndertow.ListenerInfo> listenerInfo = undertow.getListenerInfo();
同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?...那我们为什么需要替换Tomcat为Undertow技术呢? Tomcat与Undertow的优劣对比 Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。...Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。...我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示: QPS测试结果对比: Tomcat ? Undertow ? 内存使用对比: Tomcat ? Undertow ?...通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。
一、前言 昨天发了一个《SpringBoot服务器压测对比(jetty、tomcat、undertow)》,本是工作的一个笔记,没想到被红薯翻牌了(荣幸之至)。...最大连接数server.tomcat.max-threads=400 2 jetty 最大连接数(400)和最小连接数(10) 3 undertow cpu核数(16)和工作线程数(400) 4 http...,在application.properties中加入server.undertow.io-threads=16和server.undertow.worker-threads=400即可 ...以下是压测步骤: 1、使用tomcat,压测两个接口,按不同并发访问10000次,然后不断调整参数,获取最大结果。由此可得出纯tomcat和tomcat+http异步的结果。 ...2、关于服务容器 在基于天花板接口的测试中,综合对比tomcat、jetty、undertow,可以发现undertow相对性能更高点。
在网上搜索查询发现清一色的都是说undertow高并发性能优于tomcat,并且还提供了各种实验依据以作证明,但是我私下测试发现情况和网上大部分结果并不一致。...Tomcat tomcat.png cpu最高点稳定在40%,吞吐量能达到7万。 Undertow undertow.png cpu高点接近60%,吞吐量4万6。...cpu:tomcat>jetty>undertow。 复杂接口测试 carbon.png Tomcat tomcat2.png cpu高点在45%左右,吞吐量2万3。...结论 在稍复杂的接口测试下,tomcat和underwow的差距并没有很大,但是tomcat在吞吐量和cpu方面依然占据了稍小的优势,jetty与前两者存在差距。...复杂接口下吞吐量:tomcat>undertow>jetty。 cpu:tomcat>undertow>jetty。
同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?...Tomcat与Undertow的优劣对比 Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。...Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。Tomcat本身包含了HTTP服务器,因此也可以视作单独的Web服务器。...我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示: QPS测试结果对比: Tomcat ? Undertow ? 内存使用对比: Tomcat ? Undertow ?...通过测试发现,在高并发系统中,Tomcat相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。
同时,SpringBoot 也支持 Undertow 容器,我们可以很方便的用 Undertow 替换 Tomcat,而 Undertow 的性能和内存使用方面都优于 Tomcat,那我们如何使用 Undertow...Tomcat 与 Undertow 的优劣对比 Tomcat 是 Apache 基金下的一个轻量级的 Servlet 容器,支持 Servlet 和 JSP。...Tomcat 具有 Web 服务器特有的功能,包括 Tomcat 管理和控制平台、安全局管理和 Tomcat 阀等。Tomcat 本身包含了 HTTP 服务器,因此也可以视作单独的 Web 服务器。...我们在相同机器配置下压测 Tomcat 和 Undertow,得到的测试结果如下所示: QPS 测试结果对比: Tomcat ? Undertow ? 内存使用对比: Tomcat ?...Undertow ? 通过测试发现,在高并发系统中,Tomcat 相对来说比较弱。在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使用方面都是最优的。
WebSocket 支持:对 Web Socket 完全支持,用以满足 Web 应用巨大数量的客户端 嵌套性:它不需要容器,只需通过 API 即可快速搭建 Web 服务器 默认情况下 Spring Cloud 使用 Tomcat...作为内嵌 Servlet 容器,可启动一个 Tomcat 的 Spring Boot 程序与一个 Undertow 的 Spring Boot 程序,通过 VisualVM 工具进行比较,可看到 Undertow...性能优于 Tomcat 使用 Undertow 添加依赖 org.springframework.boot org.springframework.boot spring-boot-starter-tomcat...# Undertow 日志存放目录 server.undertow.accesslog.dir # 是否启动日志 server.undertow.accesslog.enabled
最近从tomcat切换到UnderTow,来优化下频繁YoungGC的问题。...核心配置在io.undertow.attribute这个包下面 例如时间配置,就是对应的DateTimeAttribute这个类: public class DateTimeAttribute implements...我们可以知道配置时间不知可以通过%t,%{DATE_TIME}来改变accesslog中的日期位置,还可以修改日期格式,通过%{time,格式}的方式 以下是一个示例accesslog格式,可供参考: server.undertow.accesslog.pattern
同时,SpringBoot也支持Undertow容器,我们可以很方便的用Undertow替换Tomcat,而Undertow的性能和内存使用方面都优于Tomcat,那我们如何使用Undertow技术呢?...那我们为什么需要替换Tomcat为Undertow技术呢?Tomcat与Undertow的优劣对比Tomcat是Apache基金下的一个轻量级的Servlet容器,支持Servlet和JSP。...Tomcat具有Web服务器特有的功能,包括 Tomcat管理和控制平台、安全局管理和Tomcat阀等。...图片我们在相同机器配置下压测Tomcat和Undertow,得到的测试结果如下所示:QPS测试结果对比:Tomcat图片Undertow图片内存使用对比:Tomcat图片Undertow图片通过测试发现...在相同的机器配置下,模拟相等的请求数,Undertow在性能和内存使用方面都是最优的。并且Undertow新版本默认使用持久连接,这将会进一步提高它的并发吞吐能力。
、Jetty、Undertow)的线程池管理,实现层面也是和核心模块做了解耦,利用spring的事件机制进行通知监听处理。...Tomcat、Jetty、Undertow这三个都是这样,他们并没有直接使用JUC提供的线程池实现,而是自己实现了一套,或者扩展了JUC的实现;翻源码找到相应的线程池后,然后看有没有暴露public方法供我们调用获取...1.继承JUC原生ThreadPoolExecutor(9.0.50版本及以下),并覆写了一些方法,主要execute()和afterExecute() 2.继承JUC的AbstractExecutorService...内部线程池的实现 Undertow因为其性能彪悍,轻量,现在用的还是挺多的,wildfly(前身Jboss)从8开始内部默认的WebServer用Undertow了,之前是Tomcat吧。...、Jetty、Undertow三大WebServer内置线程池的一些情况,重点介绍了Tomcat的,篇幅有限,其他两个感兴趣可以自己分析,原理都差不多。
领取专属 10元无门槛券
手把手带您无忧上云